6 research outputs found

    The Quest for a Practical Sophomore-Level Software Engineering Course

    Get PDF
    This paper describes our efforts starting since 2014 when we began developing a practical introductory sophomore-level software engineering course. The aim is to guide students into the fundamental theory and practice of building reliable software, with an emphasis on agile and object-oriented practices. Course topics revolve around three main themes: 1) managing complexity (how to model and scale software), 2) achieving quality (how to minimize defects) and 3) supporting usability (how to deliver user functionality). Students are exposed to theoretical and practical aspects of software production, such as software life-cycle models, strong-typing, testing, documentation, graphical user interfaces, UML, design patterns, version control systems and software deployment. The course is in constant evolution: near-future plans include adding build automation tools and DevOps concepts. We made the early decision to use reference materials available to our students at no cost; therefore, all reference materials are accessed online through resources afforded by our library

    Some aspects of grading Java code submissions in MOOCs

    Get PDF
    Recently, massive open online courses (MOOCs) have been offering a new online approach in the field of distance learning and online education. A typical MOOC course consists of video lectures, reading material and easily accessible tests for students. For a computer programming course, it is important to provide interactive, dynamic, online coding exercises and more complex programming assignments for learners. It is expedient for the students to receive prompt feedback on their coding submissions. Although MOOC automated programme evaluation subsystem is capable of assessing source programme files that are in learning management systems, in MOOC systems there is a grader that is responsible for evaluating students’ assignments with the result that course staff would be required to assess thousands of programmes submitted by the participants of the course without the benefit of an automatic grader. This paper presents a new concept for grading programming submissions of students and improved techniques based on the Java unit testing framework that enables automatic grading of code chunks. Some examples are also given such as the creation of unique exercises by dynamically generating the parameters of the assignment in a MOOC programming course combined with the kind of coding style recognition to teach coding standards

    Automatic Assessment of Programming Assignments using Image Recognition

    Get PDF
    Programmeerimisülesannete automaatne kontrollimine on vaba juurdepääsuga e-kursuste ehk MOOCide (Massive Open Online Course) juures hädavajalik suure hulga esitatud lahenduste tõttu. Ülesannete nõuded peavad olema detailselt sõnastatud, et neid oleks võimalik automaatselt kontrollida. Väga täpsed nõuded ülesannetele piiravad jällegi nende loomingulisust. Probleemi leevendamiseks loodi antud lõputöö raames süsteem, mis suudab automaatselt hinnata programmeerimisalaste ülesannete graafilist väljundit, kasutades pildituvastust (image recognition). Süsteemi rakendatakse algajatele mõeldud programmeerimisalaste ülesannete puhul, mille lahenduseks on soovitud objekti graafilise väljundiga programmid. Lahendusprogrammist genereeritud pilti analüüsitakse pildituvastusega, mille tulemuseks on arv, mis näitab tõenäosust, et soovitud objekt oleks pildil. Esitus on arvestatud või mittearvestatud vastavalt eelmainitud tõenäosusele. Valminud süsteemi testiti MOOCi peal, täpsemini 2272 esitatud lahenduse peal. 4.6% tulemustest olid valenegatiivsed ning 0.5% tulemustest valepositiivsed. Kursuse jooksul läbi viidud vaheküsitlusest selgus, et 82.1% vastanute arvates töötas süsteem hästi või väga hästi ning keskmine hinnang süsteemile 5 palli skaalal oli 4.4.Automatic assessment of programming tasks in MOOCs (Massive Open Online Courses) is essential due to the large number of submissions. However, this often limits the scope of the assignments since task requirements must be strict for the solutions to be automatically gradable, reducing the opportunity for solutions to be creative. In order to alleviate this problem, we introduce a system capable of assessing the graphical output of a solution program using image recognition. This idea is applied to introductory computer graphics programming tasks which solutions are programs that produce images of a given object on the screen. The image produced by the solution program is analysed using image recognition, resulting in a probability of a given object appearing in the image. The solution is accepted or rejected based on this score. The system was tested in a MOOC on 2,272 solution submissions. The results contained 4.6% cases of false negative and 0.5% cases of false positive grades. A participant survey revealed that the system was perceived to be functioning well or very well by 82.1% of the respondents, with an average rating of 4.4 out of 5

    Efficient Use of Teaching Technologies with Programming Education

    Get PDF
    Learning and teaching programming are challenging tasks that can be facilitated by using different teaching technologies. Visualization systems are software systems that can be used to help students in forming proper mental models of executed program code. They provide different visual and textual cues that help student in abstracting the meaning of a program code or an algorithm. Students also need to constantly practice the skill of programming by implementing programming assignments. These can be automatically assessed by other computer programs but parts of the evaluation need to be assessed manually by teachers or teaching assistants.There are a lot of existing tools that provide partial solutions to the practical problems of programming courses: visualizing program code, assessing student programming submissions automatically or rubrics that help keeping manual assessment consistent. Taking these tools into use is not straightforward. To succeed, the teacher needs to find the suitable tools and properly integrate them into the course infrastructure supporting the whole learning process. As many programming courses are mass courses, it is a constant struggle between providing sufficient personal guidance and feedback while retaining a reasonable workload for the teacher.This work answers to the question "How can the teaching of programming be effectively assisted using teaching technologies?" As a solution, different learning taxonomies are presented from Computer Science perspective and applied to visualization examples so the examples could be used to better support deeper knowledge and the whole learning process within a programming course. Then, different parts of the assessment process of programming assignments are studied to find the best practices in supporting the process, especially when multiple graders are being used, to maintain objectivity, consistency and reasonable workload in the grading.The results of the work show that teaching technologies can be a valuable aid for the teacher to support the learning process of the students and to help in the practical organization of the course without hindering the learning results or personalized feedback the students receive from their assignments. This thesis presents new visualization categories that allow deeper cognitive development and examples on how to integrate them efficiently into the course infrastructure. This thesis also presents a survey of computer-assisted assessment tools and assessable features for teachers to use in their programming assignments. Finally, the concept of rubric-based assessment tools is introduced to facilitate the manual assessment part of programming assignments

    An experience report of the solo iterative process

    Get PDF
    The field of software engineering is over 50 years old; originally, mathematicians and engineers thought software development was more of an art form than a defined process. These first software engineers managed to produce a variety of complex, working software; however, many software engineers today use agile processes. This thesis is an experience report in an agile process called the Solo Iterative Process. In this thesis, previous research is reviewed in previous solo processes, team processes, individual phases of software evolution and software evolution tools. Then the Solo Iterative Process is defined. To begin the experience report a subject software, a change request and the tools and technologies are identified. Then 9 change requests are performed on the subject software. The discussion looks at matters of individual phases that occur over a set of change requests
    corecore