How Might I Manage Students’ Programming Work?
There are two main components to managing a classroom of students while they write programs or code, and both apply to projects small and large:
- Choosing the right integrated development environment for you and your students
- Distributing and collecting digital assignments
Choosing an Integrated Development Environment
Software programs that are used to write, run, and debug code are called integrated development environments or IDEs. IDEs can be programs that are installed on your computer, or they can be software on the Internet that is accessed through a web browser, such as Chrome and Firefox. (Internet Explorer is not recommended.)
Your first decision when teaching a CS unit will be which IDE is the most useful for you as a teacher. Below is a list of some of the practical issues that you will need to think about when choosing an IDE.
We have found that there is no single IDE that will have all the features that you want. That means you will need to decide which issues are most important and which can be worked around. The choices you make will depend on your student population and the level at which you teach. For example, if you are teaching at the elementary level, you might not want a program that requires student email addresses to create student accounts. However, if you are teaching at the high school level, requiring email addresses might not be an issue.
The following are some practical issues to consider:
- Creating and managing student accounts—Do the students need email addresses to create an account? Does the IDE offer a way to sync logins with Gmail accounts? Learn about some of our experiences creating and managing student accounts.
- Monitoring student progress—Can accounts be set up with a teacher/student relationship? Is there a teacher dashboard for you to easily view student progress? If not, is there a workaround for viewing intermediate progress while students are working on long-term projects?
- Ease of use—Is the interface designed for beginners or do you need to take time to unpack the features for your students? Does the IDE provide a way for the code to be checked as the students are typing it (syntax highlighting)? How easy are the error messages to understand by your students who must correct the errors (debug)?
- Teacher comments—Is there a way to comment on the code and redistribute it for the students to keep working? Can you see the code as the students are working?
Most of the code your students will be working on and submitting will be online and accessed through the cloud. For example, Scratch code is saved in a Scratch online project at scratch.mit.edu, whereas website code could be HTML or CSS that is submitted in an online Mozilla Thimble project or the like. In each of these scenarios, students will simply save their work and provide a link for their instructors to access their work online.
Recommendations for Potential IDEs and Web-Based Platforms
We highly recommend using web-based IDEs because ALL student work is saved online in accounts created on-site by the students. Here are SOME examples for free, web-based IDEs:
- Elementary school
- Code.org — Code.org’s elementary school IDE is a place to complete code assignments/puzzles in the CS Fundamentals curriculum. It provides powerful classroom management for teachers, such as tracking student progress, and provides students with assignment-by-assignment scaffolding including video tutorials.
- Scratch — Scratch is a visual (block-based) IDE with a very strong community of teachers and students. Scratch provides Studios, which allow multiple users share project in a shared space, as well as teacher accounts that support management of virtual classrooms on the Scratch site. A major component of the Scratch IDE and community is remixing, which is the practice of using another project to create projects of your own.
- Middle and high school
- Scratch — Scratch is a visual—or block-based— IDE with a very strong community of teachers and students with teacher accounts and Studios that are sort of like virtual classrooms.
- Code.org — Code.org’s App Lab is a visual IDE that allows users to toggle between blocks and text. It includes design tools to prototype mobile apps in the web browser as well as a tool to track the data used in the app.
- Repl.it — Repl.it supports programming in many programming languages including Python, Ruby, HTML/CSS/JS, and many others. Repl.it also provides teachers the ability to create classrooms and add students as well as create “unit tests” that students can run to see if their code is meeting requirements.
- Codeboard—Codeboard allows you to create and share exercises with students; it also analyzes and inspects students’ submissions.
There are a multitude of other resources, and that list is constantly growing. The CSforAll Consortium website lists some providers of resources, but only those who are members of that consortium. We stay on top of developments through social media, blog posts, technology news, and by working with teachers from lots of backgrounds.
Digital Classroom Management
Managing digital student work can be done through a number of different tools. Some were designed specifically for educators, but not specifically for computer science; others were designed initially for programmers and adapted for educators. Below are examples of three types of classroom management tools.
General Classroom Management: Google Apps for Education (GAFE)
If your school has enabled Google Apps for Educators (GAFE), it is highly recommended students use their GAFE Gmail addresses because doing so will simplify the account creation process and prevent hours of username and password recovery.
Google Classroom is an educational platform that integrates with Google Apps for Education (GAFE) to simplify distributing, collecting, and grading student assignments. Using Google Classroom is a great way to keep your assignments and your students’ work organized automatically. Google Classroom organizes work into subfolders in your student’s Drives. As of early 2017, Google Classroom does not require a GAFE account.
GAFE is especially useful when asking students to reflect on their work either by writing responses to reflection questions in a Google Form, Google Doc, or for creating a presentation about their work using Google Slides. Reflection on CS work is a required component of meaningful CS units.
If your school doesn’t have Google Apps for Educators, the NYC DOE has a Google Apps for Education Resource Center that can help you get started.
CS Classroom Management: Github Classroom
Github is a site where individuals can store code, share code, and collaborate with others on coding projects. You can host projects written in any language and organize your projects into repositories.
To use Github, you need to understand a bit about version control and the version control system called Git. You can learn about version control and Git here. Amateur and professional programmers alike use Git and Github to manage their projects by creating versions and branches as they build. Git can be a valuable tool to use in the classroom as both a real-world connection and for student work management, but the learning curve is fairly steep.
Github has made efforts to build out tools for computer science educators with Github Classroom, which allows you to create a “classroom” and invite students to be members; you can also invite fellow teachers, administrators, or even parents to be owners. Furthermore, you can create individual and group assignments and include resources such as instructions or starter code along with the assignment. Students can submit completed assignments, and you can provide formative feedback through commenting features.
School Social Networks: Edmodo
Edmodo is a social network created for teachers to connect with students and parents. Edmodo allows a teacher to create an assignment with resource links and due dates. When students turn in assignments, a teacher can view and grade them through an assignment dashboard. Edmodo student accounts can be easily linked to parent accounts to share the work that students are doing in class with parents.
- For new and more advanced users, web-based integrated development environments (IDEs) provide students environments to build projects and often provide teachers with practical ways to view and manage students’ work.
- Sometimes you may need to supplement a web-based IDE with a digital classroom management tool. These tools can give students a way to reflect on their CS work which is a required component of a meaningful CS unit.