1 |
Implications on the Learning of Programming Through the Implementation of Subsets in Program Development EnvironmentsDePasquale, Peter Joseph III 05 August 2003 (has links)
The undergraduate Computer Science program at Virginia Tech is the largest in the Commonwealth of Virginia, of which a key component is ``CS 1044: Introduction to Programming'', and is typical of a first course in computer programming throughout the USA. While the student access to learning resources has improved considerably with the development of web-based assets, students are still expected to use the same sophisticated program development tools as are used in industry. The perceived complexity of the learning environment currently in use drives many women and minority students from the Computer Science program. A great deal of attention has been paid to the need to administer the student assignments and the grading system for this course, so as to minimize the teaching/grading load, but little attention has been paid to the methodologies of learning the material through practice. The work reported herein is intended to improve the pedagogy of this course by creating and integrating teaching/learning tools that better manage the student's engagement in the use of program development activities. Following the implementation of a three-element software system involving an interpreter for the C-language, a program development environment, and a data-monitoring/collectiondevice, the system was deployed in support of the freshman course in parallel to the commercial system commonly used. The experiment concentrated on examining the impact of the simplified development environment and the effort required for students to complete assigned programming projects. / Ph. D.
|
2 |
Understanding Common Scratch Programming Idioms and Their Impact on Project RemixingLong, Xingyu 24 May 2021 (has links)
As Scratch has become one of the most popular educational programming languages, understanding its common programming idioms can benefit both computing educators and learners. This understanding can fine-tune the curricular development to help learners master the fundamentals of writing idiomatic code in their programming pursuits. Unfortunately, the research community's understanding of what constitutes idiomatic Scratch code has been limited. To help bridge this knowledge gap, we systematically identified idioms as based on canonical source code, presented in widely available educational materials.
We implemented a tool that automatically detects these idioms to assess their prevalence within a large dataset of over 70K Scratch projects in different demographic and project categories. Since communal learning and the practice of remixing are one of the cornerstones of the Scratch programming community, we studied the relationship between common programming idioms and remixes.
Having analyzed the original projects and their remixes, we observed that different idioms may associate with dissimilar types of code changes. Code changes in remixes are desirable, as they require a meaningful programming effort that spurs the learning process. The ability to substantially change a project in its remixes hinges on the project's code being easy to understand and modify. Our findings suggest that the presence of certain common idioms can indeed positively impact the degree of code changes in remixes. Our findings can help form a foundation of what comprises common Scratch programming idioms, thus benefiting both introductory computing education and Scratch programming tools. / Master of Science / With over 68 million users and growing, Scratch has become one of the most popular programming languages for introductory computing learners. As with learning any programming language, understanding common programming idioms used in the language's application domain is important for both computing educators and learners. Educators need this understanding in order to fine-tune their curricular development, while learners can leverage this knowledge to effectively master the fundamentals by writing idiomatic code. Unfortunately, our understanding of what constitutes idiomatic Scratch code thus far has been limited. To address this knowledge gap, we systematically identified idioms based on source code with good code quality, as presented in widely available educational materials.
We implemented a tool that automatically detects these idioms to assess their prevalence within a large, diverse dataset of over 70K Scratch projects. Since communal learning and the practice of remixing are one of the cornerstones of the Scratch programming community, we studied the relationship between common programming idioms and remixes. Having analyzed the original projects and their remixes, we found that different idioms may associate with dissimilar types of code changes. The ability to change a project in its remixes hinges on the project's code being easy to understand and modify. Our findings suggest that the presence of certain common idioms can positively impact the degree of code changes in remixes. Our findings can help form a foundation of what comprises common Scratch programming idioms, thus benefiting both introductory computing education and Scratch programming tools.
|
3 |
Helping Student Programmers Identify and Fix Bugs Using Static Analysis ToolsSenger, Allyson Lauren 11 January 2022 (has links)
Static analysis tools can be used to help programmers identify problems in their code. However, these tools often assume that developers have some programming background knowledge, so they can be hard to use in an educational context. We investigated the most common FindBugs errors from student code submissions and determined those errors that were related to incorrect solutions to problems and potential struggling for students. FindBugs is a static analysis tool that looks for incorrect patterns in Java bytecode analysis to identify potential coding flaws. For the common errors, we rewrote some of the original FindBugs messages to help students more easily understand the problems with their code. We found that students with at least one FindBugs warning in their final submission to an assignment had more submissions, longer work times, and lower correctness scores than students who did not have a FindBugs warning in their final submission. Adding modified FindBugs feedback to the automated grader resulted in students making fewer submissions and decreasing the length of time required to complete assignments. / Master of Science / Professional software developers use automated tools when they code to help them catch potential coding problems. These tools are difficult for novice student programmers because they do not have the same level of background as professionals. In this work, we attempted to change the feedback given by these tools so that students could understand it and use it to fix their code. We found that, across all of the undergraduate courses in this study, FindBugs warnings were associated with students having more trouble with assignments. When students could see FindBugs warnings, their time to complete assignments and the number of attempts they made both went down.
|
4 |
The design, development and evaluation of a visual programming tool for novice programmers : psychological and pedagogical effects of introductory programming tools on programming knowledge of Greek studentsVasilopoulos, Ioannis Vasileiou January 2014 (has links)
This thesis reports a research project that aims to improve the teaching and learning of introductory programming from a pedagogical and psychological viewpoint. Towards this aim, seven principles for designing educational programming tools for novices were identified by reviewing literature regarding novices’ difficulties and using a theoretical framework defined by the psychological theories of Constructivism and Cognitive Load Theory. This set of design principles was not only theoretically identified, but its pedagogical impact was also empirically tested. For this reason, Koios, a new programming tool, was designed and developed as a manifestation of the combined set of principles. Empirical studies were conducted by a way of a quasi-experimental design in two different Greek secondary-education institutions. The independent variable was compliance with the set of the seven principles. Students’ level of programming skills (procedural knowledge) was the dependent variable, while the quality of their mental models in the domain of introductory programming (declarative knowledge) was the potential mediator. The effect of compliance with the set of principles on students’ programming skills and mental-model quality was explored via Koios’ evaluation. Declarative- and procedural-knowledge measurements, as well as a practical test, were used to collect data, which were analysed using ANOVA and hierarchical multiple regression. The major conclusions drawn from this study are:(a) compliance with the set of design principles does not affect the development of novices’ procedural and declarative programming knowledge, (b) a programming tool that highly complies with this set facilitates novices in the application of their procedural programming knowledge during program creation and (c) programming tools, declarative and procedural knowledge are independent components in learning to program. However, it was also concluded that the two knowledge types and a programming tool that highly complies with the set contribute significantly to novices’ programming performance. This study contributes to knowledge by theoretically identifying and empirically testing a set of design principles for educational programming software, and by producing and scientifically evaluating a programming tool as an embodiment of this set. Through this evaluation, the suggestion of Koios as a practically useful programming tool for novices seems to be well supported.
|
5 |
How do they understand? Practitioner perceptions of an object-oriented program : a thesis presented in partial fulfilment of the requirements for the degree of Doctor of Philosophy in Education (Computer Science) at Massey University, Palmerston North, New ZealandThompson, Errol Lindsay January 2008 (has links)
In the computer science community, there is considerable debate about the appropriate sequence for introducing object-oriented concepts to novice programmers. Research into novice programming has struggled to identify the critical aspects that would provide a consistently successful approach to teaching introductory object-oriented programming. Starting from the premise that the conceptions of a task determine the type of output from the task, assisting novice programmers to become aware of what the required output should be, may lay a foundation for improving learning. This study adopted a phenomenographic approach. Thirty one practitioners were interviewed about the ways in which they experience object-oriented programming and categories of description and critical aspects were identified. These critical aspects were then used to examine the spaces of learning provided in twenty introductory textbooks. The study uncovered critical aspects that related to the way that practitioners expressed their understanding of an object-oriented program and the influences on their approach to designing programs. The study of the textbooks revealed a large variability in the cover of these critical aspects.
|
6 |
Instructional technology for the teaching of novice programmers at a university of technologyRudolph, Godfrey January 2015 (has links)
Dissertation submitted in fulfilment of the requirements for the degree of Master of Information Technologyin the Department of Information Technology in the Faculty of Informatics and Design Cape Peninsula University of Technology / Learning computer programming can be fun, challenging and improve problem solving which is a useful ability in general. A teaching-learning environment with a strong emphasis on problem solving promotes social behaviour and discloses the personal benefits that individuals working in almost any Information Technology position can get from programming knowledge. This research project is looking at the challenges experienced by novice programmers and the negative effect it has on the student and the university. This study will address the knowledge and skills needs of programming students and the challenges for students and educators to evolve from traditional to technology-supported teaching and learning. Computer programming is a cognitively challenging subject and good instructional strategies are important in providing the student with optimal learner support. Novice programmers often struggle to understand how a computer executes a program, which impacts negatively on the delivery of the subject and throughput rates. The majority of first year Information Technology students at Cape Peninsula University of Technology are novice programmers and lack strong logic and reasoning as well as other Information Technology skills that can facilitate their interpretation and application of key concepts in programming. These challenges and negative impact on the academic development of programming students have therefore forced the researcher to investigate innovative teaching strategies and/or instructional technologies that can facilitate novice programmers in learning the basic programming concepts. The purpose of this on-going study is to enhance the traditional method of teaching and the understanding of the problems experienced by novice programmers. This study attempts to respond to the question of what the tentative design principles of instructional technology are that can be used to facilitate novice programmers’ understanding of programming concepts. A mix methodology was considered but at the end a qualitative approach was employed. Multiple sources of data gathering, which include participant observations, video recording, a questionnaire, and document analysis, were used as research instruments. The findings, relative to providing a basis for finding a mechanism to help our first year students to cope with the abstract concepts of programming, reflected the literature review. Other key findings included: Students have little or no prior computer or programming experience Student population is diverse in terms of computer skills and programming knowledge Visualization will help reduce the difficulties in writing programs The overall outcomes of this study suggest that:
Good programming examples that include games should be used Students must be given the opportunity to be more active in their learning. Computerized assistants should be provided for novice programmers A visualization tool similar to Scratch should be considered A basic background in Mathematics is recommended
|
7 |
Assignment, scope, and sequence: Code tracing as a tool to improve novice programmers’ mental modelsvan den Dool Enebjörk, Mattias January 2022 (has links)
Novice programming students often fail or drop out of beginner’s programming courses. One reason for this are incomplete or incorrect mental models, especially with regards to variable assignment and execution sequence, meaning that students have structural misconceptions of how a computer functions. To help correct such misconceptions, this study develops, tests, and assesses an intervention to correct mental models. The intervention consists of an in-class exercise that revolves around code tracing, which is an activity in which students execute code by hand and keep track of variables and their values by using pen and paper. In order to assess the exercise’s effectiveness, participants completed a baseline test and a follow-up test. The study found that a large proportion of the students held inviable mental models with regards to either variable assignment, execution sequence, or variable scope—or any combination of the three. Post-exercise tests showed a significant improvement across all three of the aforementioned categories of misconceptions, especially with regards to execution sequence. To achieve wide-scale implementation of the proposed intervention, the study identified a number of obstacles and opportunities. In terms of obstacles, the baseline and follow-up tests need further sophistication to increase sensitivity. Relatedly, it is necessary to develop software that generates randomized baseline tests, follow-up tests, and code tracing exercise problems. Key opportunities are the intervention’s low-tech nature, limited time needed for the exercise, as well as effectiveness.
|
8 |
Automated Identification and Application of Code Refactoring in Scratch to Promote the Culture Quality from the Ground upTechapalokul, Peeratham 04 June 2020 (has links)
Much of software engineering research and practice is concerned with improving software quality. While enormous prior efforts have focused on improving the quality of programs, this dissertation instead provides the means to educate the next generation of programmers who care deeply about software quality. If they embrace the culture of quality, these programmers would be positioned to drastically improve the quality of the software ecosystem. This dissertation describes novel methodologies, techniques, and tools for introducing novice programmers to software quality and its systematic improvement. This research builds on the success of Scratch, a popular novice-oriented block-based programming language, to support the learning of code quality and its improvement. This dissertation improves the understanding of quality problems of novice programmers, creates analysis and quality improvement technologies, and develops instructional approaches for teaching quality improvement. The contributions of this dissertation are as follows. (1) We identify twelve code smells endemic to Scratch, show their prevalence in a large representative codebase, and demonstrate how they hinder project reuse and communal learning. (2) We introduce four new refactorings for Scratch, develop an infrastructure to support them in the Scratch programming environment, and evaluate their effectiveness for the target audience. (3) We study the impact of introducing code quality concepts alongside the fundamentals of programming with and without automated refactoring support. Our findings confirm that it is not only feasible but also advantageous to promote the culture of quality from the ground up. The contributions of this dissertation can benefit both novice programmers and introductory computing educators. / Doctor of Philosophy / Software remains one of the most defect-prone artifacts across all engineering disciplines. Much of software engineering research and practice is concerned with improving software quality. While enormous prior efforts have focused on improving the quality of programs, this dissertation instead provides the means to educate the next generation of programmers who care deeply about software quality. If they embrace the culture of quality, these programmers would be positioned to drastically improve the quality of the software ecosystem, akin to professionals in traditional engineering disciplines. This dissertation describes novel methodologies, techniques, and tools for introducing novice programmers to software quality and its systematic improvement. This research builds on the success of Scratch, a popular visual programming language for teaching introductory students, to support the learning of code quality and its improvement. This dissertation improves the understanding of quality problems of novice programmers, creates analysis and quality improvement technologies, and develops instructional approaches for teaching quality improvement. This dissertation contributes (1) a large-scale study of recurring quality problems in Scratch projects and how these problems hinder communal learning, (2) four new refactorings, quality improving behavior-preserving program transformations, as well as their implementation and evaluation, (3) a study of the impact of introducing code quality concepts alongside the fundamentals of programming with and without automated refactoring support. Our findings confirm that it is not only feasible but also advantageous to promote the culture of quality from the ground up. The contributions of this dissertation can benefit both novice programmers and introductory computing educators.
|
9 |
Semi-automated assessment of programming languages for novice programmersBuyrukoglu, Selim January 2018 (has links)
There has recently been an increased emphasis on the importance of learning programming languages, not only in higher education but also in secondary schools. Students of a variety of departments such as physics, mathematics and engineering have also started learning programming languages as part of their academic courses. Assessment of students programming solutions is therefore important for developing their programming skills. Many Computer Based Assessment (CBA) systems utilise multiple-choice questions (MCQ) to evaluate students performance. However, MCQs lack the ability to comprehensively assess students knowledge. Thus, other forms of programming solutions are required to assess students knowledge. This research aims to develop a semi-automated assessment framework for novice programmers, utilising a computer to support the marking process. The research also focuses on ensuring the consistency of feedback. A novel marking process model is developed based on the semi-automated assessment approach which supports a new way of marking, termed segmented marking . A study is carried out to investigate and demonstrate the feasibility of the segmented marking technique. In addition, the new marking process model is developed based on the results of the feasibility study, and two novel marking process models are presented based on segmented marking, namely the full-marking and partial-marking process models. The Case-Based Reasoning (CBR) cycle is adopted in the marking process models in order to ensure the consistency of feedback. User interfaces of the prototype marking tools (full and partial) are designed and developed based on the marking process models and the user interface design requirements. The experimental results show that the full and partial marking techniques are feasible for use in formative assessment. Furthermore, the results also highlight that the tools are capable of providing consistent and personalised feedback and that they considerably reduce markers workload.
|
10 |
Evaluating and Improving Domain-Specific Programming Education: A Case Study with Cal Poly Chemistry CoursesFuchs, Will 01 June 2022 (has links) (PDF)
Programming is a key skill in many domains outside computer science. When used judiciously, programming can empower people to accomplish what might be impossible or difficult with traditional methods. Unfortunately, students, especially non-CS majors, frequently have trouble while learning to program. This work reports on the challenges and opportunities faced by Physical Chemistry (PChem) students at Cal Poly, SLO as they learn to program in MATLAB. We assessed the PChem students through a multiple-choice concept inventory, as well as through “think-aloud” interviews. Additionally, we examined the students’ perceptions of and attitudes towards programming. We found that PChem students are adept at applying programming to a subset of problems, but their knowledge is fragile; like many intro CS students, they struggle to transfer their knowledge to different contexts and often express misconceptions about programming. However, they differ in that the PChem students are first and foremost Chemistry students, and so struggle to recognize appropriate applications of programming without scaffolding. Further, many students do not perceive themselves as competent general- purpose programmers. These factors combine to discourage students from applying programming to novel problems, even though it may be greatly beneficial to them. We leveraged this data to create a workshop with the goal of helping PChem students recognize their programming knowledge as a tool that they can apply to various contexts. This thesis presents a framework for addressing challenges and providing opportunities in domain-specific CS education.
|
Page generated in 0.0755 seconds