Authors: Dan Garcia; Michael Ball
In early June, we released Snap! version 5, with more new features than in any previous release. We now have a community website where users can share and publish projects so others can find and remix them, and where they can ask questions and discuss the beauty and joy of computing. We can now embed Snap! projects in other web pages. We've also enhanced the programming language, making it easier to discover and to use powerful blocks for analyzing data and transforming media. Did you know you can now use the video motion from the camera as an input device? How about painting by whistling? There's nothing that beats a live demonstration of all these wonderful features, and we have two veteran power users to take it through its paces.
Authors: Nathaniel Weinman; Brian Hsu; Alexia Camacho
Parsons Problems, in which students unscramble provided lines of code, are an exciting innovation for teaching introductory Computer Science. Prior work has shown that students can learn more efficiently by solving Parsons Problems compared to writing code and can learn more effectively by solving Parsons Problems compared to worked examples. Though Parsons Problems have been found effective, there is some evidence that students can use syntactic heuristics to help them solve these problems without full understanding, confirmed to be in use by mature CS1 students in our pilot study. To address this limitation, we propose Faded Parsons Problems, a variation of Parsons Problems where parts of the provided code are incomplete. We built a Flask app that supports Python programming exercises - traditional code writing, standard Parsons Problems, and Faded Parsons Problems - as well as survey and simple comprehension questions (multiple choice and short answer questions). The system can log anonymized data from participants, enforce time limits, and randomize treatment selection. Exercises support an autograder, implemented as a separate worker using RQ that safely executes arbitrary code. Students can run pre-configured tests as frequently as they want to receive detailed output from the test cases: function arguments, expected output, actual output, print statement output, raised exceptions, and custom messages configured by the instructor. Exercise descriptions, provided code lines (including blanks), initial code, and test cases may be configured from YAML files. The system has been used successfully with 50 simultaneous users. A demo can be viewed at https://codestyle.herokuapp.com/sigcse-demo
Authors: Mehak Maniktala; Tiffany Barnes
Undergraduate students often struggle to learn optimal logic proof solving strategies in Discrete Math courses, primarily because of the open-ended nature of the domain. Students can, therefore, benefit from personalized tutoring, where they can receive user-adaptive support. Over the past decade, the advancements in the field of intelligent tutoring systems (ITSs) have made it possible to provide personalized tutoring with minimal involvement of a teacher or a human expert. While such tutoring systems have the potential to augment student learning on a large scale, few intelligent tutors are made open source. Deep Thought is a logic tutor where students practice constructing deductive logic proofs. Extensive research has been conducted for 11 years to provide data-driven intelligent tutoring support in Deep Thought. The logic tutor provides adaptive support using data-driven approaches on two levels: problem level, where the tutor decides whether the student should view the next problem as a worked example or they should solve it, and step level, where the tutor decides when an unsolicited partially-worked step should be provided to the student to direct them towards optimal problem-solving strategies. We have found encouraging evidence to support that the intelligent policies in Deep Thought help undergraduate students learn logic. Deep Thought is currently being used in discrete math classes at two universities: North Carolina State University, and the University of North Carolina at Charlotte. Our aim is to make this tutor available to a larger audience so as to contribute to the Computer Science Education community.
Authors: Mariia Mykhailova
Quantum computing harnesses quantum laws of nature to enable new types of algorithms, not efficiently possible on traditional computers, that may lead to breakthroughs in crucial areas like materials science and chemistry. There is rapidly growing demand for a quantum workforce educated in the basics of quantum computing. However, there have been very few offerings that help the learner to bridge the gap between the theoretical quantum computing knowledge and applying it to solving real-world problems.
The Quantum Katas project has been designed specifically to reduce that gap. Each kata is a sequence of programming exercises that walk the learner through one or several closely related topics in quantum computing. The learner turns to the kata once they have studied the theory on this topic, to internalize their new knowledge. Each exercise requires writing a fragment of code in Q# - a quantum programming language. Most importantly, each kata includes a testing framework that provides immediate feedback for the attempted solutions, allowing the learner to study at their own pace even without access to instructor. This makes the project beneficial both for instructor-led studies and for self-learning.
The Quantum Katas are an open-source project available at https://github.com/microsoft/QuantumKatas.
In this demo I will showcase the Quantum Katas and talk about our experience using them in a variety of learning environments, from guided university courses to workshops and study groups to self-paced learning.
Authors: David Stotts; Yu Ji
Bricks is an extreme active learning environment developed for teaching intro programming using learn-by-doing: students learn by writing code in class and getting instant feedback on their progress. In use for 6 years at UNC, Bricks has increased class attendance, student comprehension and mastery of content, in-class interactions, and student satisfaction. The demo shows "a day in the life" of a Bricks student, with the presenter as instructor. Audience members with laptops will be able to participate in the student coding and learning experience. In the Bricks pedagogy, the instructor writes code in-class to demonstrate basic language use, as well as algorithmic design thinking. Students "type what I type" and write the same code, for small credit. Every class period is almost entirely coding, and discussing the programs. Out of class, these in-class examples guide students in "do it yourself" programming. Bricks has a client/server web-based architecture. The demo runs both the student programming interface and the instructor dashboard. We illustrate tracking class progress as the audience writes student code, and we project some student work for class discussion and comparisons. We also show the on-line help system, where student questions about program problems are handled in real-time. A new feature called "crowd sourcing solutions" supports collaborative coding of larger programs. Starter code is distributed to students through the Bricks database, and student solution components are collected back for integration and testing. More details can be found in this paper: http://www.cs.unc.edu/~stotts/SIGCSE2020/BricksExLearn.pdf
Authors: Steven Carr; Jean Mayo
In many undergraduate programs, students primarily write code in Java or other scripting languages. Yet C and C++ are widely used when performance is important. Poor understanding of a C program's layout in memory and its execution leads to the introduction of security vulnerabilities. We present the SecureCvisual system, which is designed to help students learn to develop more secure and robust C programs.
The system takes input from dynamic analysis using Pintool. The analysis produces a sequence of events that are processed by the visualizations. A student or instructor can step forward or backwards through an execution. Source code is displayed, and events are linked to a line of source code. A program address space visualization depicts the values of registers and the program address space. Buffer overflows and other memory errors are easily seen. An integer representation window identifies integer coercions that take place within an equation. The result of a conversion between integer types is also shown. A sensitive data visualization teaches students how to protect data so that it does not appear unencrypted on secondary storage. The tool is convenient for lecture. Multiple levels of detail and different perspectives on an execution make the tool useful in a variety of courses.
This work has been supported by the National Science Foundation under grants DUE-1245310, DGE-1522883 and DGE-1523017.
Authors: Sathiamoorthy Manoharan; U S
Using the same assessment questions for all students is problematic, especially in large classes. In exams, it incentivizes students to glean answers from neighbours or memorize answers to past questions. In homework, it encourages copying and the use of cheating websites. Individualized assessments remove these incentives and encourage concept-oriented discussions among students rather than mere memorization and exchange of answers. They render copying ineffective, and make posts on cheating websites traceable, effectively mitigating collusion and plagiarism. However, individualized assessments are traditionally expensive to create and grade for all but small classes. Dividni (www.dividni.com), our free framework for creating individualized assessments, reduces this expense and creates a unique assessment for each student in classes of any size. It also enables auto-grading. We use Dividni at the University of Auckland for printable homework, online assessments and examinations, all individualized, for some of our largest classes in computer systems, programming, networking, and cybersecurity, ranging from CS1 to CS3. This demo is a tutorial introduction to using Dividni for creating individualized assessments. We will demonstrate three individualized assessment contexts: printable homework, online assessments, and examinations. The audience will have the opportunity to create their own printable homework and multiple-choice assessments.
Bring a laptop with the latest .NET framework or Mono installed. Basic knowledge of HTML and C# will be useful.
Authors: Madalene Spezialetti
The need to integrate the development of innovative thinking and creative problem-solving skills into computer science curricula has been increasingly recognized. However, two major hurdles face many computer science educators: (1) What exercises can be used to develop creative and innovative thinking in the context of computing? and (2) How, in crowded curricula, can the time be found to engage students in creative problem-solving exercises? This demonstration presents a solution to both questions using video scenarios. These short films, with associated discussion questions, feature fictitious companies facing problems that computing solutions could alleviate. For example: Can an art gallery please a patron who wants paintings categorized by redness? In what innovative ways can a pet shop create customer communities? The problems the characters are facing are not explicitly stated nor do they have a single solution. Instead, the viewer must discern the problems through critical listening and observation, and then develop creative solutions to solve them. Since the videos decouple problem-solving from implementation, they also provide an equal-footing environment that allows students with varying technical abilities to participate productively in the exercises. Participants will be introduced to how video-based creative problem-solving exercises can be used, even in time-restricted situations. The videos and associated discussion questions are available at http://www.youtube.com/virt-university.
Authors: Neil C. C. Brown
BlueJ is a Java IDE for beginners that has been in widespread use for over twenty years. It is designed specifically for novices, to minimise the amount of cognitive load when learning to program and provide a productive learning experience that supports the teaching of key object-oriented concepts such as the class/object distinction, encapsulation, construction and inheritance.
This year sees the release of BlueJ 5, including among other changes a rewritten program editor and a rewritten extensions API. This demo will present a wide range of BlueJ features, several significant ones added since the last presentation of BlueJ at a SIGCSE Symposium, and also highlight its existing main features for attendees unfamiliar with the system: support for interactive invocation, object inspection, debugging, unit testing and version control. Viewers of the demo will gain a solid understanding of BlueJ's features and how they are designed to support teaching.
Authors: Mark Stehlik; Erin Cawley; David Kosbie
There are a great number of resources to introduce CS in the K-8 space, most notably Scratch and code.org. There are two AP CS courses at the High School level, but there are not nearly as many resources to bridge the gap between the engaging, fun, K-8 resources and those AP courses. And what is available tends to lack continuity and rigor. It is generally accepted that coding and creativity go hand-in-hand. This is apparent in the learning opportunities in the K-8 space but as programming courses get more challenging, they tend to lose the creative aspect. In this demo, attendees will be able to unpack how students can learn to code as they learn to create, They will also discover resources that support creativity while introducing students to text-based programming through coding in Python with CMU Graphics. The goal of this session is to provide teachers with an opportunity to learn how they can bridge the gap from block-based coding experiences to the AP courses with a text-based, year-long, introduction to programming course whose only recommended prerequisite is algebra readiness. We will be using CMU CS Academy which teaches students to code in Python through a browser-based graphics and animation framework that provides instant, automated feedback and has a strong focus on creativity and problem-solving.
If you’d like to use Jupyter-style notebooks in your class without managing your own server, take a look at Colab which provides “a hosted Jupyter notebook service that requires no setup to use and provides free access to computing resources including GPUs. For more information, visit our FAQ at https://research.google.com/colaboratory/faq.html.
Description: Teacher preparation programs across the US are becoming aware of the need for CS education to be a part of teacher programs. In this study we explore the existing CS education integration into teacher preparation programs primarily in schools of education. In addition to findings regarding education coursework, we offer opportunities for CS departments to partner on this important work.”