Skip to main content

Syllabus

CS 2100: Program Design and Implementation I

Course Description

Building on intro programming experience (from CS 2000 or a different institution), examines 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 version control, writing tests, development environments, and good programming habits. Practices using these design principles by writing medium-sized applications and using data science code libraries. Continues to interweave ethical challenges and skills in program design.

Recordings, lecture notes, and supplementary material are available on Canvas.

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 to demonstrate a passing knowledge of the following topics to be placed into 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" 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 (also known as 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 weekly 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 four quizzes over the semester, tentatively scheduled during lecture.

There will also be a final exam at a time to be announced by the university.

Communication

This website is your primary source for course policies, homework assignments, lab assignments, and lecture notes. 2. Pawtograder is our course grading platform. This is where you find homework and lab 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. It is also the place where you will ask questions online about homework, and where you will attend online office hours.

People

InstructorCampusOffice Hours
Prof. Rasika BhaleraoOaklandTuesdays 10am - 1pm in CPM 200
Prof. Leena RazzaqBostonMondays 1pm - 2:30pm in Meserve 329
Prof. Rose SloanBostonWednesday 3-4 PM in Meserve 306B
Prof. John ParkBostonMondays 4:30pm - 5:30pm drop-in w/signup in Meserve 318
Prof. Jeongkyu LeeNYCFriday 12:30pm - 2pm in the Found Faculty Lounge

Students can also meet with instructors outside of office hours by appointment.

Due Dates, Late Tokens, Regrades

Homework assignments will be due on Thursdays1, at 6PM Pacific time / 9PM Eastern time.

Any assignment can have a "Late Token" applied (see https://docs.pawtograder.com/students/assignments/late-tokens), which gives you a 24-hour extension on it. You will begin the semester with two late tokens, which you can use one on any assignment, but you must apply it before the assignment is due. No assignments will be accepted after the due date, or, if a late token has been applied, after the late due date. If there is an exceptional situation that makes you unable to do this, please reach out to your instructor.

If you have an assignment on Pawtograder that you believe was graded incorrectly, you can submit a request 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 Pawtograder and, depending on campus, in person. These can be used 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, participation, labs, and quizzes. You may ask for feedback on anything else, but it will not figure into your final grade.

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.

GradeHomeworkExam Topics (Quizzes + Final Exam)Labs (out of 11)
A80% or higher93% or higher6 or more
A-80% or higher93% or higher
B+70% or higher80% or higher8 or more
B70% or higher80% or higher6 or more
B-70% or higher80% or higher
C+60% or higher65% or higher8 or more
C60% or higher65% or higher6 or more
C-60% or higher65% or higher
D+50% or higher50% or higher8 or more
D50% or higher50% or higher6 or more
D-50% or higher50% or higher

There are 33 lectures. Participating in 27 or more lectures will bump your score up one row. For example, if you had a homework score of 72%, an exam topic score of 85%, and attended 7 labs, attending at least 27 lectures will bump your score from B to B+.

The in-class exercises during lecture will be graded based on whether questions were attempted, not on correctness. In-class exercises can only be done from the lecture classroom (or attending synchronously online with explicit permission). Completing an in-class activity while not present in class is an academic integrity violation, which will result in a zero for the participation grade for the semester and an OSCCR report.

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 without their knowledge 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. 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. For more on tutoring and workshops, see https://cps.northeastern.edu/academic-resources/global-student-success/international-tutoring.

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://studentlife.northeastern.edu/we-care/. Call 617.373.4384 or email wecare@northeastern.edu.

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.

Footnotes

  1. except Homework 1, which is due on a Tuesday