Syllabus

CS 1 will teach you to design, write, and analyze code to solve computational problems from a range of disciplines. You’ll also learn to think about problems the way a computer scientist thinks – a skill that is valuable in any field. The course is suitable for students with no previous background in Computer Science, and no knowledge of mathematics beyond high-school algebra.

CS 1 fulfills the TLA distributive requirement, and is the introductory course for the Computer Science major and minor.

Lectures will be in person, at 10:10-11:15 am ET on Monday, Wednesday, and Friday. We will occasionally use x-hours, so you should keep them available; our x-hour is scheduled for Thursday from 12:15-1:05 pm ET. All documents, class examples, lab assignments, short assignments, and sample solutions related to the course will be on the site you are viewing now.

Lectures will be in LSC 100. This is a big room and the course has been split into smaller sections, so please be on time and sit near the front!

Professor

Devin Balkcom
devin.balkcom@dartmouth.edu

Office hours

Each section leader will make themselves available on zoom for two office hours per week; you should visit your own section leader if you would like help on an assignment. You may also e-mail your section leader to set up time outside of regular office hours, but please be considerate of section leader time.

Recitation section

You are required to attend a one-hour recitation section meeting by zoom each week, starting the second week of classes. Attendance is mandatory; section leaders will take attendance. You must attend your own recitation to be marked as present. Your section leader will contact you via Canvas mail and give you a link to a when2meet to schedule sections.

The section leaders for this term are Eunice Kweon, Angelic McPherson, Jack Lauer, Giorgiana McCombe, Saksham Arora.

Coursework, grading

There are roughly 440 points available in the course: 60 for short assignments, 160 for lab assignments (including checkpoints), and 220 for exams. Grades are based on your raw score; typically a 90% would earn an A-, 94% an A, etc.

There will be four exams. There will be review sessions during class or during x-hours before each exam.

Short assignments

Short assignments are relatively brief exercises that are usually due in two or three days. Short assignments will usually consist of one or two short programs to help you understand the concept being covered. We will not accept late assignments.

Your section leader will grade your short assignments on a scale of 0 to 5.

Lab assignments

There will be four in-depth lab assignments; you will have one week to work on each lab. You are not required to complete the lab assignment in the lab. You may use your own computer wherever you like, just as you do for short assignments.

Lab assignments require a significant time commitment. Start early, and if you need to, get advice from me, the section leaders, the TA, or at lab help hours. For each lab, there will also be a checkpoint, due a few days after the lab is assigned. Checkpoints will be graded as part of your lab grade. We will not accept late assignments.

Extra credit

Some of the assignments may suggest extra credit work. You should do extra credit work if you find it interesting and think that it might teach you something. It rarely pays to skimp on the regular assignments in order to do extra credit problems, and we are not generous in handing out extra credit points. Labs typically permit up to 5 points of extra credit.

How to get help

There are many ways for you to get help. Your first step should be to ask a question on Ed Discussion, which you can access through the CS 1 page on Canvas. You can visit me or course staff during office hours, or you can make an appointment with me or your section leader.

Textbook and software

There is a free on-line textbook for the course, Project Python. Links to the relevant sections of the text will be posted for each lecture on the schedule page. We wrote the text as lecture notes for this course. Reading the text and doing the exercises in it daily are necessary to do well in this course.

We will be using PyCharm to edit and run code. You will install this software on your own computer as part of the first short assignment.

Honor Principle

On exams, all work must be your own. You may work on short assignments individually or in groups. Programs that you turn in, however, should be created, typed, documented, and output generated, yourself. For the lab assignments, you may consult freely with instructors and classmates during the phase of designing solutions, but you should then work individually when creating your programs—typing, documenting, and generating output. During the debugging stage you may discuss your problems with others in the class, but you should not copy code to “fix” bugs. To do otherwise is a violation of the Academic Honor Principle. If you work with a classmate on any assignment, you should tell us who you worked with in a comment at the beginning of your program.

You should attribute the proper source in any code that you submit that you did not write yourself. This includes code that you take from outside references – for example a book other than the course text. And it even includes code that you take from class examples, a book, or the assignments. (I agree that may be tedious to attribute the source in code that we have given you, but we want you to be in the habit of attributing your sources.)

It is a violation of the Academic Honor Principle to falsely represent output as coming from your program if it did not. If you change your program, make sure to generate output from the version of the program that you hand in.

Over the years we have developed and refined a number of homework problems, and I plan to reuse some of them for this class. You should not look at any solutions to homeworks assigned in previous terms, including sample solutions, or solutions written by other students.

We have had some uncomfortable situations occur in the past. Two students, Alice and Ralph, discuss an assignment and design their code together. That is fine. But then they decide that since their programs would be so similar, they might as well have Alice type in the code, have Ralph make his own copy of the file containing the code, and then have Ralph make his own minor changes. This is a violation of the Academic Honor Principle. Although you may discuss and design with others, the code you hand in must be entirely your own.

Here’s another situation that occurred. Trixie and Ed start working independently on a program. Trixie finishes and has a working version. Ed has trouble with his. Trixie helps Ed debug. That is fine. But then Trixie realizes that Ed has a section of code that is all wrong and the program she wrote has just the right code for that section. She shows Ed her program. Or worse, she gives Ed an electronic copy of her program so that he can just paste in the correct code. Either action is a violation of the Academic Honor Principle.

Here is a good rule of thumb. If you are talking in normal English (or Chinese or German or some other natural language) you are probably OK. If you find yourself talking in Python code, you have crossed the line. So saying, “Your program runs forever because you have the wrong condition in the while loop” is OK. But saying, “Change while x == 0: to while x >= 0:” is not.

If you have any question about whether what you’re doing is within the Academic Honor Principle, ask me! If it’s late and you can’t find me, you’re better off erring on the side of caution.

Most violations of the Academic Honor Principle come down to failure to cite work that is not yours. If you copy any portion of your program from your friend Elvira and represent it as your work, then you either intended to deceive or were careless about citing. Either case is a violation of the Academic Honor Principle. If you copy your entire program from Elvira but include the comment, “This code was copied in its entirety from Elvira,” then you cited properly, though you didn’t actually do the work. In this latter case, I would not report a violation of the Academic Honor Principle, though your grade on the assignment would be 0. But that would be far preferable to a COS hearing.

The same goes for code that you find in some other book or on the Internet. You are in violation of the Academic Honor Principle if you fail to attribute your sources.

You don’t need to cite just because you’re using a construct you saw elsewhere. For example, you need not cite for using print("something"), even though it was in the class examples. That would be like citing “printing press” in an essay! Nor do you have to cite just because you use a while-loop, even though you saw a while-loop in a class example. It’s when you lift several lines of code from elsewhere that you need to cite.

To cite, include in a comment—near the top of your file is fine—stating where you got the code from:

# Based on the say_introduction function in chapter 1 of the course notes.

I have brought several Academic Honor Principle cases to the COS, and I deeply dislike having to do so. Please don’t make me.

I’ll be recording all of our lectures that occur at the scheduled time, so that those who cannot be there due to poor internet connectivity or time zones can watch later. Dartmouth has asked that I include the following language describing some bounds on how recording should be used. You do not need to send me any sort of agreement on this – it just makes clear that you shouldn’t record or distribute any recordings without my consent.

  1. Consent to recording of course and group office hours. a) I affirm my understanding that this course and any associated group meetings involving students and the instructor, including but not limited to scheduled and ad hoc office hours and other consultations, may be recorded within any digital platform used to offer remote instruction for this course; b) I further affirm that the instructor owns the copyright to their instructional materials, of which these recordings constitute a part, and distribution of any of these recordings in whole or in part without prior written consent of the instructor may be subject to discipline by Dartmouth up to and including expulsion; c) I authorize Dartmouth and anyone acting on behalf of Dartmouth to record my participation and appearance in any medium, and to use my name, likeness, and voice in connection with such recording; and d) I authorize Dartmouth and anyone acting on behalf of Dartmouth to use, reproduce, or distribute such recording without restrictions or limitation for any educational purpose deemed appropriate by Dartmouth and anyone acting on behalf of Dartmouth.

  2. Requirement of consent to one-on-one recordings. By enrolling in this course, I hereby affirm that I will not under any circumstance make a recording in any medium of any one-on-one meeting with the instructor without obtaining the prior written consent of all those participating, and I understand that if I violate this prohibition, I will be subject to discipline by Dartmouth up to and including expulsion, as well as any other civil or criminal penalties under applicable law.

Religious observances

Some students may wish to take part in religious observances that occur during this academic term. If you have a religious observance that conflicts with your participation in the course, please meet with me before the end of the second week of the term to discuss appropriate accommodations.

Disabilities

I encourage students with disabilities to discuss with me after class or during my office hours appropriate accommodations that might be helpful to you.

Students with disabilities enrolled in this course and who may need disability-related classroom accommodations are encouraged to make an appointment to see me before the end of the second week of the term. All discussions will remain confidential, although the Student Accessibility Services office may be consulted to discuss appropriate implementation of any accommodation requested.

Advice

Read the material I ask you to read. Start all assignments early. With few exceptions, at the time you receive an assignment, you’ll know everything you need to do it.

Do not be afraid to get help. The purpose of this course is not to waste your time. If you are not making progress on a problem, please see me, a TA, or a section leader.

Three final pieces of advice:

  1. Don’t fall behind in this course.
  2. Don’t fall behind in this course.
  3. DON’T FALL BEHIND IN THIS COURSE.

The material in CS 1 builds on itself, and the pace is fast. As a result, it’s easy to fall behind in this course, and if you do it’s very difficult to recover.