CS 5010 provides an intensive tour of programming and design. The main objective of the course is expose students to different ways of thinking of a problem and designing robust solutions using a mix of program design paradigms. We will discuss and compare object-oriented and functional design paradigms. We will concentrate on object-oriented program design and the design of abstractions that support the design of reusable software and libraries.
The course reviews typical object-oriented concepts such as information hiding, encapsulation and various forms of polymorphism. It contrasts the use of inheritance and composition as dual techniques for software reuse. It provides a deeper understanding of object-oriented design using the use of graphical design notations such as UML and object-oriented design patterns. Finally it emphasizes on testing, specifically unit testing of components.
An important aspect of this course is to write clean, well-structured, well-documented code. Students will be expected to design and program to facilitate reuse, minimize code duplication and make it "future-proof". Students will also be expected to explain and defend their design and programming decisions to code panels. In this sense this course trains students to see programming as a "people's discipline".
The course is suitable for all graduate students in the MSCS program. It assumes that students have prior experience in programming and design.
None.
"Think first, experiment later."
The curiosity to ask questions, try out new things and the motivation to go above and beyond is essential to extract maximum benefit from this course. This is a programming-intensive course, but also emphasizes careful design and thorough testing.
Upon completion of this course, a student will be able to:
![]() |
||||
| Joydeep Mitra | ||||
| Email: j.mitra@northeastern.edu |
![]() |
![]() |
![]() |
![]() |
![]() |
| Ritik Bompilwar | Sudhanva Devanathan | Jainum Sanghavi | Gautam Khanapuri | Deepanshu Kumar |
| Email: bompilwar.r@northeastern.edu | Email: devanathan.s@northeastern.edu | Email: sanghavi.j@northeastern.edu | Email: khanapuri.g@northeastern.edu | Email: kumar.deepan@northeastern.edu |
![]() |
![]() |
![]() |
||
| Hrishikesh Pradhan | Ramesh Krishnan | Meet Jain | ||
| Email: pradhan.hr@northeastern.edu | Email: lnu.rame@northeastern.edu | Email: jain.meet@northeastern.edu |
We will make every effort to adhere to this schedule. However individual sections may be a bit ahead or behind.
In order to make office hours efficient, we will impose a time limit of roughly 10 minutes per student in the queue. We rely on self and community policing for this. Please help us to keep office hours efficient by doing the following:
To avail of office hours:
If you need help, you may talk to the instructors or the TAs during their office hours.
You can also post questions and look for answers to similar questions on Piazza. You will find a link to Piazza in the navigation menu on Canvas. Please join this page if you have not already.
Do not post answers to assignments to Piazza. Also refrain from using Piazza as a "crowdsourcing" tool for your assignments. Think about your problem well before posting it here.
For programming assignments, we will use Java 11. You should download and install the Java SE Development Kit, version 11 from Oracle.
The supported IDE (integrated development environment) for the course is IntelliJ IDEA. This is the IDE that the instructor uses in lecture, and we may occasionally give instructions for how to perform particular tasks in IDEA. You are free to use a different IDE, but we may not be able to help you if you run into trouble. IntelliJ IDEA Community Edition may be downloaded free of charge, and you can also license the Ultimate Edition. Please go to the Jetbrains website to get a free academic license to the Ultimate Edition.
There is no required textbook, but you may find these books useful.
Testing your code is sufficiently important that we've devoted an entire page to it. Please read these notes, for each and every assignment you work on.
We will write and expect both black-box as well as white-box unit tests. While the above notes focus on black-box tests, we will use mutation testing to test the strength of your white-box tests.
You are required to read the lecture material for the given lecture before coming to class. During the lectures we will discuss the material covered in the required reading, answer questions, provide additional examples and applications.
It is OK if you do not understand everything when you first read it, but reading about the new concept ahead of the time will give you a chance to anticipate the questions you may have and allow you to follow better the details of explanation during the lectures.
The goal of the labs is to see in practice problems that illustrate the concepts covered in the lectures, and to prepare you for the next programming assignment.
We will ask you to submit some of the lab problems at the end of each lab.
Please come to the labs with your own computers. The lab room has no computers.
Cheating helps no one, and if caught, will cause you only trouble. The following are some examples of academic dishonesty:
All the above offenses are equal to each other in seriousness, and will have equal consequences. The above list is not exhaustive. If you are unsure about a particular method of working, don’t assume it is legitimate, check with the instructor.
For individual assigments, you are not allowed to share code with anybody. You are responsible for taking reasonable measures to protect your code, so that it is not used by another student in any way that is not allowed.
For group assignments, you are allowed to share code only with your group partner. You are not allowed to look at code of another student (other than your group partner) under any circumstances.
For labs, you are encouraged to work with another student, although you may work by yourself if you wish to. However, each student must make a submission individually.
Online help: You may look at articles or code online (except use generative AI, see above). However, it is your responsibility to ensure that the code you write is not similar to code that can be found online (any such similarity will be considered cheating). This applies even if the code is licensed to be used, and you cite it in your work.
What to do if you are struggling with an assignment/the course:
The instructors have the liberty to ask you questions about your submitted work to verify that you have indeed worked on it by yourself. Penalties for cheating will range from a zero for the entire assignment in question to an "F" for the course. Irrespective of the size of the offense, you will be officially reported and the incident will go on your academic record. Please review the Northeastern University policy on academic integrity.
Khoury College takes academic integrity very seriously and usually punishes offences severely (deferred suspension, loss of coop and even termination from program). Please do not put your standing in the program in jeopardy by committing a violation.
You will submit your homework using the Pawtograder system. The system is integrated with git so make sure that you know the basics of git before getting started. If you do not know git refer to the references in the online resources section of this syllabus. Read Pawtograder Docs to familiarize yourself with the grading system.
Note, every assignment where you write code will be followed one day later by a self-evaluation assignment. For group assignments, only one partner (for team
You will submit your labs and assignments using Pawtograder. A how-to guide for using Pawtograder is available. You will need an active Northeastern account and a github.com account to use this server.
Each assignment and lab will be posted on Pawtograder. To start them, a student must clone the repository provided to them. "Submissions" are just subsequent commits to the repository. By default the last commit before the deadline will be used for grading.
Note that:
Additionally, every assignment where you write code will be followed by a self-evaluation assignment. Only one partner (for team assignments) needs to complete the self-eval, and it will count for both partners.
If you have trouble submitting to the server and you have time before the
deadline, please wait a few minutes and try again; it may also be worth checking
on Piazza to find out whether other students are experiencing similar
difficulties. If upon retrying you still cannot submit, email the instructor.
Your email should have the subject
"HW N submission problems" (where N is the appropriate homework
number), and you provide a link to your git repo.
Most of the submission problems are related to not following submission guidelines. These problems will not be justification for extending the deadline or accepting a submission beyond the deadline!
Pawtograder is based on Git. As such, you should not have any problems with submission unless you have Git troubles. Therefore it is important that you are comfortable with basic Git operations such as push, pull, add and commit. You will also need to understand merges for group assignments. If you use branches and related commands, please be careful. Failure to submit due to git-related mistakes such as merge conflicts etc. will not be considered. Please do not work until the last minute before committing.
Each student gets three free, no-questions-asked late tokens for the semester. Late tokens can be used for assignments and labs. Two of these tokens can be used for individual assignments, and one can be used for group assignments. One late token extends the deadline of an assignment by 24 hours without any grade penalty. If the assignment has a self-evaluation then its deadline is pushed by 24 hours as well.
Read how to take use a late token in Pawtograder Late Tokens.
The purpose of late tokens is make the extension process fair and transparent by getting the instructors out of the extension-granting business entirely. Instead, when you need an extension, you can take one—provided you have a late token remaining. If you do not have any late tokens remaining, there is no opportunity to submit late for a penalty.
Late tokens are expected to be used for reasons like (but not limited to) illness, submitting again to improve score beyond the deadline, other activities causing a delay in submission, etc. Late tokens are not in addition to other things that may come up in the semester. The instructors will work with you if you require additional accommodations for health or other unexpected emergencies, but please do not bank on getting extensions while saving your late tokens.
To use a late tokens, follow the instructions in the Pawtograder documentation. Conserve your late tokens carefully. However unused late tokens cannot be cashed in for extra credit at the end of the semester.
No more than one late token may be used on any one assignment or lab. You may not look at and must avoid gaining knowledge of the self-evaluation questions until you have submitted your late assignment. Late tokens cannot be divided fractionally, but must be used whole. Late tokens can be shared with a partner: a group may use a late token if either member has at least one remaining.
Your grade will be based on your performance on the assignments (66%), labs (14%) and code walks (20%).
The individual weights are as below. The instructors may change the weights by a little at the end of the semester, but the proportions above will remain the same. Further, individual scores for group assignments may be adjusted by UPTO 20% in case of unequal contribution based on peer evaluations and git contributions.
| Assignment | Weight |
|---|---|
| Assignment 1 | 8% |
| Assignment 2 | 9% |
| Assignment 3 | 9% |
| Assignment 4 | 10% |
| Assignment 5 | 11% |
| Assignment 6 | 11% |
| Assignment 7 | 8% |
| Code walk 1 | 5% |
| Code walk 2 | 5% |
| Code walk 3 | 5% |
| Code walk 4 | 5% |
| Lab 1 | 0% |
| Lab 2 | 1% |
| Lab 3 | 1% |
| Lab 4 | 1.5% |
| Lab 5 | 2% |
| Lab 6 | 2% |
| Lab 7 | 1% |
| Lab 8 | 1.5% |
| Lab 9 | 1.5% |
| Lab 10 | 1.5% |
| Lab 11 | 1% |
The grades will computed on an absolute basis: there will be no overall curving. The instructor may choose to curve an individual assignment or give some extra credit, but please do not bank on such a chance.
The mapping of raw point totals to letter grades is given below. Please note that these grade boundaries may move slightly at the discretion of the instructor, but the grade boundary for A is unlikely to change. Grades are not rounded: for instance, earning a 92.9% does not imply we will round up to a 93% and hence to an A.
| Range | Letter Grade |
|---|---|
| A | 93% |
| A- | 90% |
| B+ | 87% |
| B | 83% |
| B- | 80% |
| C+ | 77% |
| C | 73% |
| C- | 70% |
| F | 0% |
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 University and its faculty are committed to creating a safe and open learning environment for all students. If you or someone you know has experienced a Prohibited Offense including sexual harassment, sexual assault, dating/domestic violence, or stalking, please know that help and support are available. Northeastern strongly encourages all members of the community to take action, seek support, and report incidents of Prohibited Offenses to the Title IX Coordinator within The Office for University Equity and Compliance (OUEC) through the Online Discrimination Complaint Form.
If you have a disability-related need for reasonable academic accommodations in this course and have not yet met with a Disability Specialist, please visit The Disability Access Services (DAS) and follow the outlined procedure to request services. After the DAS has approved you for an academic accommodation in this class, please present your "Professor Notification Letter" to the instructor, ideally during the first week of the semester, so that we can address your specific needs and set up appropriate accommodations as early as possible.