About the course

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.

Lecture location

Life sciences center (LSC) 100

Class times

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.

All documents, video recordings, class examples, 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.

Instructor

Vasanta Lakshmi Kommineni

Office hours

Link to Google sheet available on Canvas homepage

Section leaders and TAs

Office hours

Each TA and section leader will hold 3 to 4 hours of office hours per week. The office hours will be split into group office hours and individual office hours.

The schedule for these office hours will be posted on Canvas.

Recitation section

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, Jan 15th 2024.

You will fill out a form listing your availability for sections as part of Assignment 0. and will be assigned a section based on your availability.

Lecture

Attending lectures and participating in in-class discussions and activities is a very important part of learning in CS1. 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 is 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. Having said this, we may occasionally do in-class exercises, so please bring your laptop with you to class.

Coursework and grading

As a part of this course there will be 20 assignments, 5 exams (2 long and 3 short exams) and 7 recitations. 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:

Exams

There will be five exams in this course. Three of these will be in class during x-hours/regular class time. The other two exams will be 2-hour long exams. All exams will be on paper, and you must
take these exams in person. You can find the schedule for these exams on the schedule page. All exams will not be uniformly weighted. Out of the 60% weightage assigned for exams, the two exams that you score the highest scores will have a 15% weightage each, and the remaining three exams will have a 10% weightage each in the final score.

Assignments

There will be 20 coding assignments in this course. You will have approximately 48 hours to solve each assignment. For some assignments, you will use the solution you built in previous assignments. The goal of the assignments is to help you practice the concepts discussed in class and develop good coding practices. You may use your own computer wherever you like to work on these assignments. Start early, and if you need to, get advice from me or the TAs during office hours. Note: For each assignment you are expected to read the assignment and create a list of requirements. We (TA or I) will not help you if you have not read the assignment instructions.

Section leaders will grade your assignments on a scale of 0 to 10. For each assignment, 2 out of 10 points will be reserved for good coding style.

Free extensions

You will get 5 free extensions (up to 24 hours each) for the whole term that you can use for any of your assignments. There will not be any lateness penalty when you use these extensions.

Lateness policy

Once you have used all your free extension, there will be a 0.5 point lateness penalty for every late day. Even if your assignment is late by few minutes we will count it as a late day.

Extra credit

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.

How to get help

There are many ways for you to get help. Your first step should be to ask a question on Slack. You will find the link to it on Canvas. You can visit me or TAs during office hours, or you can make an appointment with me or a TA. Please note that you cannot get help on assignments or exams from any person who is not part of CS1 staff this term.

Honor Principle

  1. On exams, all work must be your own, and you are not allowed to discuss it with your classmates or CS1 staff. All exams will be on paper, and you are not allowed to use any electronic devices during the exam.
  2. For your assignments, you may consult freely with the 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 never copy or share code to "fix" bugs. To do otherwise is a violation of the Academic Honor Principle.
  3. Being in possession of someone else's solution for an assignment or exam problem is a violation of the Academic Honor Principle.
  4. If you work with a classmate on any assignment, created or debugged using an AI based code generator you must 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.
  5. 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 textbook or AI-based code generators. And it even includes code that you take from class examples, a book, or the assignments. (I agree that it 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.)
  6. 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.
  7. 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.
  8. If you are working on a computer that someone else uses, 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 is often difficult to tell who was the copy-ee and who was the copy-er. Avoid this situation.
  9. You should be able to explain and reproduce your solutions for assignments or exam questions. You should also be able to use the concepts you used to solve assignment or exam problems to solve new but similar problems.

Examples of Honor Code violations

Here are some examples where students have violated the Academic Honor Principle.

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 is 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 are doing is within the Academic Honor Principle, ask me! If it is late and you cannot find me, you are 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 did not 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. For every case that is referred to the COS committee, I will give you a 0 on that assignment, test or exam.

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

You donot need to cite just because you are 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 is 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 not make me.

Special note on AI based code generators

(The following text was non-auto-generated by Prof. Pierson)

AI-based tools such as ChatGPT, CoPilot, Code Llama, and others can generate code for you based on natural language prompts that you provide. For this class, I do not consider it to be an honor principle violation for you to use these tools to create or debug your short assignment or problem set solutions. However, I strongly urge you to write the solutions yourself, rather than relying on these tools. Most of the true mastery of this course's material happens from striving to create correct and efficient code yourself, not from simply reading and copying another person or algorithm's code. Additionally, these tools will not be available on the exams, so you'll need to fully understand the course material to succeed.

If you choose to use an AI-based tool you must:

If you choose to use an AI-based tool you must not:

Remember: because code compiles and runs does not mean it is correct or efficient. Also, be aware that these tools typically store and analyze your prompts, potentially building a profile of you.

You can find more details on Dartmouth Honor Principle here.

Attendance

You are expected to attend class in person; however, there may be times when you need to miss class due to emergent circumstances like illness or other medical reasons, family emergencies, etc. Please do not attend class if you are sick, if you are in isolation after testing positive for COVID-19, or if you have been instructed to stay home by Student Health Services. During the time you are not able to attend class in person, if you feel well enough, you can continue class work as detailed below. However, I encourage you to prioritize taking care of yourself if you are not feeling well or have diminished capacity. If you are unable to continue class work while absent or are out of class for longer than two weeks (you can change this two-week time period to work with your course structure), I will work with you and your dean to chart the best path forward. While alternative arrangements may be made, this path may also include a recommended incomplete, course withdrawal, or medical withdrawal from the term. I will record all lectures and post them on Canvas.

Safety

Masks are welcome at Dartmouth. All students are encouraged to wear a mask if they feel more comfortable doing so. Students, faculty, and staff are required to follow Dartmouth’s face-mask policy in our classroom and in other course-related locations, such as recitations and office hours.

I am obligated to assure that COVID-19 health and safety standards are followed; if you refuse to comply with Dartmouth’s COVID-19 safety protocols, you will be asked to leave the classroom. You remain subject to course attendance policies, and dismissal from class will result in an unexcused absence. I am also obligated to report you to the Office of Community Standards & Accountability for disciplinary action under Dartmouth’s Standards of Conduct. Additional COVID-19 protocols may emerge; please watch for and read emails from Dartmouth senior administrators.

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.

Student Accessibility and Accommodations

Students requesting disability-related accommodations and services for this course are required to register with Student Accessibility Services (Getting Started with SAS webpage; student.accessibility.services@dartmouth.edu; 1-603-646-9900) and to request that an accommodation email be sent to me in advance of the need for an accommodation. Then, students should schedule a follow-up meeting with me to determine relevant details such as what role SAS or its Testing Center may play in accommodation implementation. This process works best for everyone when completed as early in the quarter as possible. If students have questions about whether they are eligible for accommodations or have concerns about the implementation of their accommodations, they should contact the SAS office. All inquiries and discussions will remain confidential.

Mental Health and Awareness

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.

Title IX

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. Please see this for more information.

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.

Important advice

Read the material I ask you to read. Start all assignments early. With few exceptions, at the time you receive an assignment, you will 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 is easy to fall behind in this course, and if you do it is very difficult to recover.

Acknowledgements

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.