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.
Moore Hall, Filene (B13)
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.
All documents, video recordings, class examples, lab assignments, short assignments, and sample solutions related to the course will be either on the site you are viewing now (I recommend that you use Chrome to view this site as some of the interactive features are not compatible with all browsers) or on the course Canvas page.
Vasanta Lakshmi Kommineni
Link to Google sheet available on Canvas homepage
Each TA and section leader will hold three hours of office hours per week. The office hours will be posted on Canvas homepage.
You are required to attend a one-hour recitation section meeting each week. Attendance is mandatory; section leaders will take attendance.
During your weekly recitation sections you will solve small problems, either programming or written work. You must have your laptop, with all the CS1 software installed, available during recitation. You must attend your own recitation to be marked as present. Recitation sections will begin from Monday, Sep 20th 2021.
You will fill out a form listing your availability for sections as part of Short Assignment 0. and will be assigned a section based on your availability.
I like it when you ask questions during lecture. Chances are that if you have a question, then at least one other student has the same question.
Turn off the audible ringer on your phone before lecture, and please avoid checking your phone during lecture it's distracting to me and others.
I strongly discourage laptop use during lecture. There is overwhelming evidence that they are distracting and detrimental to you and those that are around you. I ask that if you must have your laptop open during lecture that you sit on either side of the classroom, rather than in the central section. Having said this, we may occasionally do in-class exercises, so please bring your laptop with you to class.
As a part of this course there will be 9 short assignments, 4 labs, 8 recitations, 5 exams. The weightage for each of these catergories in your final score is as follows:
I will be following an absolute grading policy for assigning a letter grade in this course:
There will be five exams and only the best four scores will count towards your final grade. I will announce the dates for first four exams during the term and the fifth exam will be scheduled on the day of the final exam. The final exam is scheduled by the Registrar.
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. You will have 4 extensions (upto 24 hours for each extension) that you can use for short assignments.
Section leaders will grade your short assignments on a scale of 0 to 5.
There will be four in-depth lab assignments; you will have one week to work on each 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 or the TAs. 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. You will have 4 extensions (upto 24 hours) that you can use for lab checkpoints/final lab assignments.
Some of the assignments may suggest extra credit work. Extra credit in this course will be tallied separately from regular scores. If you end up on a borderline between two grades at the end of the course, extra credit will count in your favor. Failure to do extra credit will never be counted against you. You should do extra credit work if you find it interesting and think that it might teach you something. It never pays to skimp on the regular assignments in order to do extra credit problems.
If you get a 30 on a lab assignment and also 5 points of extra credit, that is not the same as getting a 35 with no extra credit. The latter is far better.
There are many ways for you to get help. Your first step should be to ask a question on Ed Discussion. You will find the link to it on Canvas. You can visit me or course staff during office hours, or you can make an appointment with me or a TA or your section leader.
On exams, all work must be your own. For your assignments, you may consult freely with instructor, TAs 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. Please note that you can work with a classmate only during the designing stage.
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.
All assignments are individual assignments and students are not allowed to collaborate to solve the solutions.
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.
If you are working on a computer that someone else in the course might use, you should be very careful to remove your code from the computer when you are all done. You should probably email your code to yourself before you remove the code.
If you leave your code on a computer, and someone else can see it, then they can copy it and hand it in. It's often difficult to tell who was the copy-ee and who was the copy-er. Avoid this situation.
To remove your code, you'll want to delete it from the PyCharm workspace. And you'll also want to move any other copies on the computer to the Trash (or the Recycling Bin) and empty it.
You can more details on Dartmouth Honor Principle here.
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.
Students requesting disability-related accommodations and services for this course are encouraged to schedule a phone/Zoom meeting with me as early in the term as possible. This conversation will help to establish what supports are built into my course. In order for accommodations to be authorized, students are required to consult with Student Accessibility Services (SAS; Getting Started with SAS webpage; email@example.com; 603-646-9900) and to request an accommodation email be sent to me. We will then work together with SAS if accommodations need to be modified based on the learning environment. If students have questions about whether they are eligible for accommodations, they should contact the SAS office. All inquiries and discussions will remain confidential.
The academic environment at Dartmouth is challenging, our terms are intensive, and classes are not the only demanding part of your life. There are a number of resources available to you on campus to support your wellness, including your undergraduate dean, Counseling and Human Development, and the Student Wellness Center. I encourage you to use these resources to take care of yourself throughout the term, and to come speak to me if you experience any difficulties.
At Dartmouth, we value integrity, responsibility, and respect for the rights and interests of others, all central to our Principles of Community. We are dedicated to establishing and maintaining a safe and inclusive campus where all have equal access to the educational and employment opportunities Dartmouth offers. We strive to promote an environment of sexual respect, safety, and well-being. In its policies and standards, Dartmouth demonstrates unequivocally that sexual assault, gender-based harassment, domestic violence, dating violence, and stalking are not tolerated in our community.
The Sexual Respect Website at Dartmouth provides a wealth of information on your rights with regard to sexual respect and resources that are available to all in our community.
Please note that, as a faculty member, I am obligated to share disclosures regarding conduct under Title IX with Dartmouth's Title IX Coordinator. Confidential resources are also available, and include licensed medical or counseling professionals (e.g., a licensed psychologist), staff members of organizations recognized as rape crisis centers under state law (such as WISE), and ordained clergy see.
Should you have any questions, please feel free to contact Dartmouth's Title IX Coordinator or the Deputy Title IX Coordinator for the Guarini School. Their contact information can be found on the sexual respect website at: https://sexual-respect.dartmouth.edu.
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:
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.
This version of the course is based on the course designed by Prof. Balkcom, Prof. Cormen, Prof.Farid and Prof. Jayanti. I am thankful to them for the wonderful material they have developed.