196,001 research outputs found

    A multinational, multi-institutional study of assessment of programming skills of first-year CS students

    Get PDF
    In computer science, an expected outcome of a student's education is programming skill. This working group investigated the programming competency students have as they complete their first one or two courses in computer science. In order to explore options for assessing students, the working group developed a trial assessment of whether students can program. The underlying goal of this work was to initiate dialog in the Computer Science community on how to develop these types of assessments. Several universities participated in our trial assessment and the disappointing results suggest that many students do not know how to program at the conclusion of their introductory courses. For a combined sample of 216 students from four universities, the average score was 22.89 out of 110 points on the general evaluation criteria developed for this study. From this trial assessment we developed a framework of expectations for first-year courses and suggestions for further work to develop more comprehensive assessments

    A Multimedia Interactive Environment Using Program Archetypes: Divide-and-Conquer

    Get PDF
    As networks and distributed systems that can exploit parallel computing become more widespread, the need for ways to teach parallel programming effectively grows as well. Even though many colleges and universities provide courses on parallel programming [1], most of those courses are reserved for graduate students and advanced undergraduates. There is a demand for ways to teach fundamental parallel programming concepts to people with just a working knowledge of programming. By using the idea of a software archetype, and providing a learning environment that teaches both concept and coding, we hope to satisfy this need. This paper presents an overview of the multimedia approach we took in teaching parallel programming and offers Divide-and-Conquer as an example of its use

    Zero Shot Learning for Code Education: Rubric Sampling with Deep Learning Inference

    Full text link
    In modern computer science education, massive open online courses (MOOCs) log thousands of hours of data about how students solve coding challenges. Being so rich in data, these platforms have garnered the interest of the machine learning community, with many new algorithms attempting to autonomously provide feedback to help future students learn. But what about those first hundred thousand students? In most educational contexts (i.e. classrooms), assignments do not have enough historical data for supervised learning. In this paper, we introduce a human-in-the-loop "rubric sampling" approach to tackle the "zero shot" feedback challenge. We are able to provide autonomous feedback for the first students working on an introductory programming assignment with accuracy that substantially outperforms data-hungry algorithms and approaches human level fidelity. Rubric sampling requires minimal teacher effort, can associate feedback with specific parts of a student's solution and can articulate a student's misconceptions in the language of the instructor. Deep learning inference enables rubric sampling to further improve as more assignment specific student data is acquired. We demonstrate our results on a novel dataset from Code.org, the world's largest programming education platform.Comment: To appear at AAAI 2019; 9 page

    Behavioral Pattern Mining and Modeling in Programming Problem Solving

    Get PDF
    abstract: Online learning platforms such as massive online open courses (MOOCs) and intelligent tutoring systems (ITSs) have made learning more accessible and personalized. These systems generate unprecedented amounts of behavioral data and open the way for predicting students’ future performance based on their behavior, and for assessing their strengths and weaknesses in learning. This thesis attempts to mine students’ working patterns using a programming problem solving system, and build predictive models to estimate students’ learning. QuizIT, a programming solving system, was used to collect students’ problem-solving activities from a lower-division computer science programming course in 2016 Fall semester. Differential mining techniques were used to extract frequent patterns based on each activity provided details about question’s correctness, complexity, topic, and time to represent students’ behavior. These patterns were further used to build classifiers to predict students’ performances. Seven main learning behaviors were discovered based on these patterns, which provided insight into students’ metacognitive skills and thought processes. Besides predicting students’ performance group, the classification models also helped in finding important behaviors which were crucial in determining a student’s positive or negative performance throughout the semester.Dissertation/ThesisMasters Thesis Computer Science 201

    Insights on best teaching practices for promoting students' learning

    Get PDF
    The Department of Educational Sciences and the Department of Electronic and Telecommunications at the University of Aveiro (Portugal) have been working together with the Department of Computer and Information Sciences at the University of Strathclyde (UK), with the aim of improving the teaching and learning of introductory programming courses. Both institutions belong to the European Consortium of Innovative Universities (ECIU), with a commitment to "developing and implementing new forms of teaching, training, and research; to assuring an innovative culture within their walls; to experimenting with new forms of management and administration; and to sustaining and nurturing internationally-minded staff" (ECIU). Over the past two years, data has been collected through interviews, questionnaires and class observation, to better understand the organization of the different courses and approaches to teaching and learning. Members of academic staff have been actively involved in trying to enhance the students' learning experience through reflection on teaching methods and trying new ideas to aid student success. During this process we have assimilated insights on teaching philosophies, methods and suggestions for course redesign. As an important piece of the "puzzle", students also provided useful feedback on differing aspects of teaching and course organization. The present paper presents a meta-analysis of our findings on the relevance of teaching practices for promoting students' learning. In addition, we discuss the impact that teaching philosophies and course organization may have on best teaching practices

    Microcontrollers for Mechanical Engineers: From Assembly Language to Controller Implementation

    Get PDF
    This paper describes the evolution of a graduate and advanced undergraduate mechanical engineering course on microcontrollers and electromechanical control systems. The course begins with developing an understanding of the architecture of the microcontroller, and low-level programming in assembly language. It then proceeds to working with various functions of the microcontroller, including serial communications, interrupts, analog to digital conversion, and digital to analog conversion. Finally, the students learn how to characterize first and second order systems, and develop and implement their own controllers for a variety of electromechanical systems. The course takes the uncommon approach of teaching assembly language programming to mechanical engineering students, with the students using assembly language programming for approximately half of the course and the remainder using the C programming language. The authors believe that this approach helps students develop a better understanding of the architecture of the microcontroller and low-level routines found in embedded control applications. The course provides a bridge between traditional mechatronics courses that focus on electronics and interfacing, and lab-based control courses that use turnkey data acquisition systems and graphical programming tools such as Simulink or LabVIEW. The course has existed for over two decades, using a variety of microprocessor and microcontroller platforms. After evaluating numerous alternatives, the course was recently updated to use a 32-bit ARM Cortex-M3 microcontroller evaluation board from STMicroelectronics paired with custom interfacing circuitry. This platform was chosen not only for more modern microcontroller technology, but also for the availability of free development tools and very inexpensive evaluation boards. This allows the students to write and test their programs outside of scheduled lab times, along with the ability to cost-effectively utilize microcontrollers in future projects

    Cross Teaching Parallelism and Ray Tracing: A Project-based Approach to Teaching Applied Parallel Computing

    Get PDF
    Massively parallel Graphics Processing Unit (GPU) hardware has become increasingly powerful, available and affordable. Software tools have also advanced to the point that programmers can write general purpose parallel programs that take advantage of the large number of compute cores available in the hardware. With literally hundreds of compute cores available on a single device, program performance can increase by orders of magnitude. We believe that introducing students to the concepts of parallel programming for massively parallel hardware is of increasing importance in an undergraduate computer science curriculum. Furthermore, we believe that students learn best when given projects that reflect real problems in computer science. This paper describes the experience of integrating two undergraduate computer science courses to enhance student learning in parallel computing concepts. In this cross teaching experience we structured the integration of the courses such that students studying parallel computing worked with students studying advanced rendering for approximately 30% of the quarter long courses. Working in teams on a joint project, both groups of students were able to see the application of parallelization to an existing software project with both the benefits and complications exposed early in the curriculum of both courses. Motivating projects and performance gains are discussed, as well as student survey data on the effectiveness of the learning outcomes. Both performance and survey data indicate a positive gain from the cross teaching experience

    Steps Before Syntax: Helping Novice Programmers Solve Problems using the PCDIT Framework

    Get PDF
    Novice programmers often struggle with problem solving due to the high cognitive loads they face. Furthermore, many introductory programming courses do not explicitly teach it, assuming that problem solving skills are acquired along the way. In this paper, we present 'PCDIT', a non-linear problem solving framework that provides scaffolding to guide novice programmers through the process of transforming a problem specification into an implemented and tested solution for an imperative programming language. A key distinction of PCDIT is its focus on developing concrete cases for the problem early without actually writing test code: students are instead encouraged to think about the abstract steps from inputs to outputs before mapping anything down to syntax. We reflect on our experience of teaching an introductory programming course using PCDIT, and report the results of a survey that suggests it helped students to break down challenging problems, organise their thoughts, and reach working solutions
    • 

    corecore