Week 1: Asynchronous Prep and Introduction

Introduction to CS21

Welcome to CS21! This course is designed to have a mix of lecture and hands-on, in-class exercises. This page will review some of the tools we will use during the labs and help you get set up with the system in the CS department. During the remote asynchronous week, you should read the course syllabus, these notes, and the Lab 0 writeup. Lab 0 has some companion videos and a small exercise to practice submitting files to the instructors/graders. You should try to complete as much of this lab as possible prior to the start of the synchronous remote week. If you have questions, please contact us via email, EdSTEM, or our Zoom office hours. We look forward to seeing you all in class next week on Zoom.

Staff Introductions

  • Professors: Andrew Danner, Tia Newhall, and Ben Mitchell

  • Academic support coordinator: Lauri Courtenay

Who should take this course?

This course is designed for students with little or no programming experience. If you have taken a computer science course previously or taught yourself basic programming skill in any language, even if it wasn’t Python, you may find this course too slow. Students with prior programming experience are encouraged to contact Lila Fontes to take the CS Placement exam to see if CS21 is the proper fit.

Adding the course, switching sections

If you are looking to add this course or switch to a different section, please contact Lauri Courtenay. Lauri manages the waitlist for all sections. We will not make decisions about add/drop until the sychronous remote week begins next week. You will need to attend the zoom lectures and labs to stay in the course or hold your place on the waitlist.

Course Webpage

The Course Website is updated regularly and contains recent course announcements, links to in-class exercises, lab assignments, quiz topics, and other less dynamic course information including office hours, ninja sessions, and Python tips. Bookmark the website in Firefox or Chrome and refer to it regularly. All sections have the same quiz dates and lab assignments.


This semester, we are using EdSTEM to manage course discussions and announcements. If you are registered for the course, you should be automatically enrolled on EdSTEM. If you’re unable to log in or access the course discussion forum, please contact your course instructor — it’s possible something may not be configured correctly for you, especially if you joined after the initial registration phase. Waitlisted students will not have access to EdSTEM until they have been added to the course.

You’re encouraged to ask questions on the EdSTEM forums instead of sending emails directly to course staff. Please review the EdSTEM guidelines for using the forums.

Lab 0 will walk you through using EdStem, and give you some practice posting and reading posts.


This course has a mandatory lab section. Attendance is required unless you have completed and submitted the lab for the week prior to the start of lab. Labs started Tuesday and Lab 00 is due Saturday night.

Creating accounts

The CS machines in the Sci 256, Sci 240, the overflow lab (Sci 238) and Clothier Lab are on a separate network than the machines managed by ITS. You need a separate account with a separate password to access these machines. This week, you should try to access the CS machines remotely via SSH. If you did not get information about setting up your account remotely or changing your password, please contact us. Please note, while your username may be the same as as your ITS account, your CS account should have a different password. If you ever forget your password, you can reset it by going to CS password reset page.

Lab 0 will walk you through the steps of creating your CS account and ssh'ing in to connect to CS machines.

Your student ID has an NFC tag that can allow you access to the building and the labs after hours. When you return to campus, you should have automatically have access to the lab space by enrolling in the course. If you are having trouble with the card readers, please let us know.

What is Computer Science?

Computer science focuses on two primary questions; what can be computed, and how efficiently can computers solve problems? The answers are more nuanced than "everything", and "really fast". At the core of the discipline is algorithms. Algorithms are concise descriptions of how to solve a problem computationally. Algorithms can be implemented in a programming language and interpreted by computer hardware to automate computation. Programming is NOT the core of computer science. Programming is a way to automate and test the creative thought process that resulted in an algorithm. Programming is one tool at the disposal of computer scientists, but it is not the only tool. This course will teach you how to discover, develop, and write clear computational solutions to, often times non-computationally themed, problems. To check your thinking, you will also learn programming, debugging, and testing skills.

What is Python?

Python is the programming language we will use to implement and test our algorithms. It is relatively easy to learn, even for people not in computer science or related fields. It is free to download and it runs on many platforms including Linux, Mac OSX, and Windows. It’s pretty fun to learn and we can get started when we start synchronous instruction next week.

update21 and handin21

Eventually, we will be saving our Python code in files. You will also be using two commands regularly through the course to get and submit files for the course: update21 and handin21. The instructions in Lab 0 show how to run these commands. If connected to a CS machine with ssh, try them at the Linux prompt. You should run update21 before starting each lab assignment and handin21 to turn in lab assignments. You can run them as often as you like. update21 will not clobber (i.e. overwrite) files you modify after running update21 and handin21 can submit the same lab multiple times. Each handin submission is stored separately, but only most recent copy submitted prior to the deadline will be graded. You may continue to submit after the deadline, but these submissions will be ignored.

If update21 or handin21 does not work for you or it says you are not allowed to run these programs, email me. It’s usually my fault, not yours. We may need to add you to the class roster, change handin or change permissions on file.