Syllabus
CS 2100: Program Design and Implementation I
Course Description
Builds on prior introductory programming experience (from inside or outside Northeastern University) to examine the fundamentals of program design and implementation. Studies design of data- and object-oriented programs including common patterns; use of data structures; and underlying principles such as abstraction, encapsulation, inheritance, and interfaces. Introduces common software engineering practices such as unit tests, version control, development environments, and good programming habits. Students practice using these design principles by writing medium-sized applications and using data science libraries. Covers skills needed to identify and respond to ethical challenges that arise in the program design process.
This syllabus is subject to change. Any significant changes will be announced to the class.
Learning Outcomes
- Students can design programs using classes, objects, and inheritance effectively.
- Students can select appropriate data, data structures, and design patterns to implement medium-sized programs that meet specifications including non-functional requirements such as performance, maintainability and privacy.
- Students can write thorough test suites for programs of moderate complexity, using a variety of types of data and design patterns.
- Students demonstrate proficiency with command line tools, such as compilers, version control, and debuggers.
- Students exercise collaboration skills by solving problems with others.
- Students can identify pros and cons of using given data to solve the desired problem, and identify and defend privacy issues in problems presented to them without being told there is a privacy issue to identify.
- Given a technical problem, students can (a) identify the stakeholders, (b) identify values and interests at stake for each stakeholder, (c) discuss conflicts of values, and (d) identify modifications that would mitigate conflicts of values.
These skills will:
- prepare students for a more advanced course in program design and implementation
- help students prepare for technical job interviews
- serve students throughout their careers
Prerequisite Skills
Students who have not taken CS 2000 will need a passing knowledge of the following topics to succeed in this course:
- Variables and operations
- Arithmetic
- String operations
- Boolean operations
- Types
- Functions
- Looping and iteration
- Conditionals
- Using lists
Textbook
The textbook "Python 3 Object Oriented Programming: Harness the Power of Python 3 Objects" (third edition) by Dusty Phillips covers most of the object-oriented concepts relevant to this course, though we will not follow it exactly.
Course Structure
There will be three in-person lectures (Oakland and Boston) or two in-person lectures (NYC and London) and one lab per week. During the lectures (CS 2100) we will go over new content using lecture, live coding, discussion, and individual exercises. The lab (CS 2101) will include individual exercises and an opportunity to begin homework with guidance and feedback from instructional staff. Lab will be led by Lab Leader TAs.
Students can register for any CS 2101 lab section on their campus.
There will also be nine homework assignments. The purpose of homework is to give you hands-on experience with the course material you learned in lecture, and to prepare you for the quizzes and projects.
There will also be five exams over the semester: four quizzes during lectures, and a final exam at a time to be announced by the university.
Communication
- This website is your primary source for the schedule, course policies, and lecture notes.
- Pawtograder is our course grading platform. This is where you find assignments, and where submitted assignments will appear (after you have pushed them to GitHub) with feedback on them. It will also have all other course-related grades in its gradebook. Our course-wide discussion board will be there, where course-wide announcements will also be posted.
- Canvas (or Brightspace, in New York) will contain lecture-section-specific things like lecture participation data and lecture-specific announcements.
- The Khoury Office Hours App is where online office hours will be held. (In-person office hours will be held at locations announced in the office hours schedule.)
People
| Instructor | Campus | Office Hours |
|---|---|---|
| Prof. Rasika Bhalerao | Oakland | Tuesdays 3pm-5pm in CPM 200 and Thursdays 9-10am on Zoom |
| Prof. Laney Strange | Boston | Mondays 4-5:30pm on Zoom, Thursdays 10:30am-12pm in Meserve 051, or by appointment |
| Prof. Nate Derbinsky | Boston | Tuesdays 10am-12pm in WVH 246 |
| Prof. Jeongkyu Lee | NYC | Friday 12:30pm-2pm in the Found Faculty Lounge |
Students can also meet with instructors outside of office hours by appointment.
Due Dates and Regrades
Homework assignments will be due on Wednesdays at 6PM Pacific time / 9PM Eastern time.
There will be a 24-hour grace period on Pawtograder, so submissions will be accepted until the same time on Thursdays. No submissions will be accepted after that (without officially approved accommodations).
Autograder scores will not be changed after the assignment deadline. Students can submit an unlimited number of times before each assignment deadline.
If you have a manually-graded assignment on Pawtograder that you believe was graded incorrectly, you can submit a regrade request within Pawtograder, explaining the mistake. All regrade requests must be made within one week of receiving the graded assignment.
Office Hours
We hold extensive office hours -- both online, via the Khoury Office Hours App and in person. We encourage students to use office hours for any questions you have about course content, not limited to: questions about lecture material, related online resources, any questions about assignments, etc. The schedule for these are available on the Office Hours page.
Grading
Assessment will be based on homework, labs, lecture exercises, codewalks, and exam topics (from quizzes and the final exam). You may ask for feedback on anything else, but it will not figure into your final grade.
All homework assignments will be weighted equally in the Homework grade, all labs will be weighted equally in the Labs grade, and all codewalks will be weighted equally in the Codewalks grade.
All exam topics (from quizzes or the final exam) will be weighted equally in the Exam Topics grade. Each topic will appear on two exams. For each topic, the score for that topic will be the highest of both attempts at that topic.
The highest row in which a student satisfies all columns will be their grade (plus a bump for lectures -- see below). If no rows are completely satisfied, the student will not pass the course.
| Grade | Homework | Labs | Codewalks | Exam Topics (Quizzes + Final Exam) |
|---|---|---|---|---|
| A | 80% or higher | 80% or higher | 80% or higher | 93% or higher |
| A- | 76% or higher | 76% or higher | 76% or higher | 90% or higher |
| B+ | 73% or higher | 73% or higher | 73% or higher | 86% or higher |
| B | 70% or higher | 70% or higher | 70% or higher | 83% or higher |
| B- | 66% or higher | 66% or higher | 66% or higher | 80% or higher |
| C+ | 63% or higher | 63% or higher | 63% or higher | 76% or higher |
| C | 60% or higher | 60% or higher | 60% or higher | 73% or higher |
| C- | 56% or higher | 56% or higher | 56% or higher | 70% or higher |
| D+ | 53% or higher | 53% or higher | 53% or higher | 66% or higher |
| D | 50% or higher | 50% or higher | 50% or higher | 63% or higher |
| D- | 46% or higher | 46% or higher | 46% or higher | 60% or higher |
E.g., to get an A, you must score 80% or higher on homework, labs, and codewalks, AND score 93% or higher on exam topics. If you have the 80% homework / lab / codewalk scores, but your exam topic score is 91%, you will receive an A-.
Percentage grades will be rounded to the nearest percent. E.g., a grade of 79.2% will be rounded down to 79%.
A lecture activity score of 70% or more will bump your score up one row. For example, if you had homework, lab, and codewalk scores of 72%, and an exam topic score of 85%, a lecture activity score of 75% will bump your score from B to B+.
To progress, students are required to meet the grade point average (GPA) requirements as determined by Khoury College of Computer Sciences. (See Khoury's website for more information.)
Collaboration and Academic Honesty
Computer science, both academically and professionally, is a collaborative discipline. In any collaboration, however, all parties are expected to make their own contributions and to generously credit the contributions of others. In our class, therefore, collaboration on assignments is encouraged, but you as an individual are responsible for understanding all submitted material in the assignment. Always strive to do your best, give generous credit to others, start early, and seek help early from both your professors and classmates.
Specifically:
- You are responsible for any material you turn in. The professor reserves the right to ask you to verbally explain the reasoning behind any answer or code that you turn in and to modify your grade based on your answers. It is vitally important that you turn in work that you understand.
- Copying material from another person is not allowed.
- Additionally, sharing solutions in forums (e.g., posting to public questions, posting code online, etc) constitutes an academic integrity violation, as it may make it harder for other students to do work on their own, harming their own learning.
- Collaboration is not allowed on exams (quizzes or the final exam). Any sharing or receiving information about the content of exams is an academic integrity violation, and may result in failing the class.
We strongly recommend that you write all code yourself. Even if you discuss solutions, or approaches, with others, do the actual typing on your own! And avoid playing games or trying to find loopholes -- i.e., do not merely type what someone says, or type what you see on anothers screen. While we do not consider collaboration a violation, we still encourage following these recommendations-- relying on others for your solutions may result in you not learning the material, and in this class, not learning the material will result in not being able to pass the exams. Even with perfect homework scores, failing to pass sufficient exam topics will result in a failing grade in the course, so take homework for what it is intended: extensive opportunity to practice the skills we are teaching, paired with high quality feedback about the solution you came up with.
The minimum penalty for an academic integrity violation is a zero on the assignment and a report to the Office of Student Conduct and Conflict Resolution (OSCCR). Penalties are increased if there are aggravating factors, such as stealing another student's work, or lying about cheating. Also, see the Official University Academic Integrity Policy.
If you have a question about what is considered a violation of this policy, please ask an instructor.
If you feel that cheating is your only option, please ask for help.
The AI Policy
AI coding assistants like Cursor, Windsurf, and Copilot should not be used in this course. We believe that using an AI assistant is an important skill that should be covered after the basics (which is why there is a different policy in CS 3100). Using AI assistants before covering the basics would be like using a calculator before a course on arithmetic -- it would undermine your ability to review and understand code. Until you have the ability to design, understand, and review code, using an AI assistant amounts to wandering around in the dark, with no ability to determine if you are getting closer to what you want. (Using these tools to get decent grades while learning nothing is pretty clearly shooting yourself in the foot: you are in college to learn; if you end up unable to do anything but prompt engineer, you will have essentially no skills, given these models are intentionally rendering whatever "skill" underlying prompt engineering obselete in every generation).
The same is true of asking questions of chat models like ChatGPT, Claude, or Gemini. Putting in assignment instructions into such a model and getting out code or test cases amounts to getting the model to do the thinking for you -- and as a result, you will not learn. "Only look"ing at AI-generated solutions "before writing your own" undermines the learning just the same, as you will not be learning to actually solve problems, you will just be copying (and, importantly, never developing the ability to recognize when the AI generated solution isn't what you want). If you have a question about whether something is allowed, we encourage you to ask an instructor, and you will not be penalized for asking. You may use AI language models for non-assignment-related things.
The exception is the AI overview that appears when using a search engine like Google. You may use a search engine to look up documentation, errors, concepts, etc. when doing assignments. We always encourage you to bring larger questions to our course staff, who will likely be able to give you better answers, more suited to your background, to our curriculum, etc. If you do use LLMs for search, you are responsible for validating any information you find.
Emerging research is beginning to show that substituting practice on fundamental skills by delegating that practice to LLMs significantly decreases learning. Whilst using an LLM might reduce the immediate strain of learning something new, it can also diminish the development of critical thinking skills by decreasing engagement and impeding independent problem-solving. Moreover, even the benefits of using LLMs for experienced developers have been questioned. LLMs can be useful useful once you have gained competence in program design and are able to break down a problem and specify it precisely—-which are the skills we are trying to develop in this course.
If an instructor is suspicious of a student's overuse of AI, they may ask to meet with the student and have them explain their code. The student must fully understand all code that they have submitted.
Inclusive Environment
To create and preserve a classroom atmosphere that optimizes teaching and learning, all participants share a responsibility in creating a civil and non-disruptive forum for the discussion of ideas. Students are expected to conduct themselves at all times in a manner that does not disrupt teaching or learning. Your comments to others should be constructive and free from harassing statements. You are encouraged to disagree with other students and the instructor, but such disagreements need to respectful and be based upon facts and documentation (rather than prejudices and personalities). The instructor reserves the right to interrupt conversations that deviate from these expectations. Repeated unprofessional or disrespectful conduct may result in a lower grade or more severe consequences. Part of the learning process in this course is respectful engagement of ideas with others. We believe that diversity and inclusiveness are essential to excellence in academic discourse and innovation. In this class, the perspective of people of all races, ethnicities, gender expressions and gender identities, religions, sexual orientations, disabilities, socioeconomic backgrounds, and nationalities will be respected and viewed as a resource and benefit throughout the semester. Suggestions to further diversify class materials and assignments are encouraged. If any course meetings conflict with your religious events, please do not hesitate to reach out to make alternative arrangements.
Name and Pronoun Usage
As this course includes some discussion, it is vitally important for us to create an educational environment of inclusion and mutual respect. This includes the ability for all students to have their chosen gender pronoun(s) and chosen name affirmed. If the class roster does not align with your name and/or pronouns, please inform us of the necessary changes.
Accommodations
If you have a documented disability, please register with Disability Access Services to get the accommodations that will help you succeed. Please do this even if you are unsure whether you will need accommodations, since there may be a delay if you decide you need them later. Please do not wait until it has seriously impacted your work, as accommodations are not retroactive. See additional information for Oakland students.
Policy on Recording
Massachusetts and California laws prohibit students from recording classes without the consent of all participants, unless a disability accommodation is in place. We encourage you to seek accommodations to which you are legally entitled.
University Resources
Title IX
Title IX of the Education Amendments of 1972 protects individuals from sex or gender-based discrimination, including discrimination based on gender-identity, in educational programs and activities that receive federal financial assistance.
Northeastern’s Title IX Policy prohibits Prohibited Offenses, which are defined as sexual harassment, sexual assault, relationship or domestic violence, and stalking. The Title IX Policy applies to the entire community, including male, female, transgender students, faculty and staff.
If you or someone you know has been a survivor of a Prohibited Offense, confidential support and guidance can be found through University Health and Counseling Services and the Center for Spiritual Dialogue and Service clergy members. By law, those employees are not required to report allegations of sex or gender-based discrimination to the University.
Alleged violations can be reported non-confidentially to the Title IX Coordinator within The Office for Gender Equity and Compliance at titleix@northeastern.edu and/or through NUPD. Reporting Prohibited Offenses to NUPD does NOT commit the victim/affected party to future legal action.
Faculty members are considered “responsible employees” at Northeastern University, meaning they are required to report all allegations of sex or gender-based discrimination to the Title IX Coordinator.
In case of an emergency, please call 911.
Please visit https://www.northeastern.edu/titleix for a complete list of reporting options and resources both on- and off-campus.
International Tutoring Center
The International Tutoring Center (ITC) provides current Northeastern University international and non-native English-speaking students with free, comprehensive English language and academic support. The ITC includes student-centered one-on-one tutoring sessions and workshops on reading, writing, and language and culture.
WeCare
WeCare is a program operated through the Office for Student Affairs. The mission is to assist students experiencing unexpected challenges to maintaining their academic progress. WeCare works with students to coordinate among university offices and to offer appropriate on and off campus referrals to support successfully resolving the issue. WeCare also provides information to faculty and staff to identify Northeastern resources and policies to help students succeed.
For more information see https://we-care.studentlife.northeastern.edu/, email wecare@northeastern.edu, or call 617.373.7591.
Libraries
Students can access research resources at the F.W. Olin library (Oakland) and through the Snell Library (Boston and online). The Snell Library collaborates with both the First-Year Writing and Advanced Writing in the Disciplines programs to support students’ information literacy. Online research tutorials can be found here: https://subjectguides.lib.neu.edu/researchtutorials/getstarted
Global Learner Support
Northeastern University's Global Learner Support (GLS) offers "language, cultural, and academic support while promoting the development of intercultural competence and global understanding." They offer tutoring, workshops, and much more. Visit https://gls.northeastern.edu/ to learn more.