Time and Place
We meet on Tuesdays and Fridays, 9:50-11:30am in Robinson Hall 109. The first class is on Fri 9/6.
We meet on Tuesdays and Fridays, 1:35-3:15pm in Shillman Hall 105. The first class is on Fri 9/6.
|Instructor||Ferdinand Vesely||f.vesely@northeastern||Wed 2-6pm||Nightingale 132A|
|TAs||Ivan Chen||chen.if@husky||Mon 1:15-2:30pm||WVH, 3rd floor (by 366)|
|Thu 1-2:30pm||WVH, 3rd floor|
|Sai Sankar Gochhayat||gochhayat.s@husky||Tue 4:30-6:30pm||WVH, 3rd floor|
|Thu 5-6pm||WVH, 3rd floor|
|Divya Payyadi Venkatesh||payyadivenkatesh.d@husky||5-7pm||Hastings 100|
|Wed 5-6pm||Snell Library 002|
The technical goal of the course is to expose students to the practice of programming at a reasonably large scale. This version of the course teaches how the program design principles of the three major prerequisite courses scale to a large code base, in any programming language. Indeed, without relying on such fundamental design principles, a large code base may quickly become prohibitively complex and incomprehensible.
The social goal of the courses is to continue the development of collaboration and communication skills from the prerequisite programming courses. Going beyond pair programming, the course introduces code reviews, where students present their solutions to their peers. Both presenting code and understanding such presentations are critical skills for the modern software developer.
Registrar’s description: Considers software development as a systematic process involving specification, design, documentation, implementation, testing, and maintenance. Examines software process models; methods for software specification; modularity, abstraction, and software reuse; and issues of software quality. Students, possibly working in groups, design, document, implement, test, and modify software projects.
This course is the end of the programming sequence:x Fundamentals I, Fundamentals II, Object-Oriented Design. In addition, it assumes you have been out to one co-op.
|09/06||1. Introduction, Overview of Software development||Slides||Matthias’ notes|
|09/10||2. Software Development Process||Slides||Matthias’ notes|
|09/13||3. Quick Overview of UML||Slides|
|09/17||4. Good Code. Naming Principles||Slides|
|09/20||5. Code, pt. 2||Slides|
|09/24||6. Objects, Structures, Interfaces||Slides|
|09/27||7. Software Architectures / netcat & telnet, protocol diagrams||Slides|
|10/01||No lecture. Group work opportunity|
|10/04||8. Unit Testing||Slides|
|10/08||9. Project: Tsuro’||Slides|
|10/11||10. Design Patterns||Slides|
|10/15||11. Integration Testing||Slides|
|10/18||No lecture. Group work opportunity|
|10/22||12. Design by Contract||Slides|
|10/25||13. Code Reviews||Slides|
|11/01||14. Group Presentations||Slides|
- Assignment A – Groups & Your Favorite Programming Language
- Assignment B – Labyrinth & Formats (PDF)
- Assignment C – More Labyrinth (PDF)
Set: Thursday 09/26
Due: Tuesday 10/01 11:59pm
- Assignment D – Labyrinth TCP Client / Reflection on Implementing Specifications (PDF)
Set: Wednesday 10/02
Due: Tuesday 10/08 11:59pm
- Phase 1 - Analysis, Plan, Tile Design
- Phase 2 - Rule Checkers & the Game Board
Set: Thursday 10/17
Due: Wednesday 10/23 11:59pm
- Phase 3 - Referee & Players, Rule Checker, Game Board
Set: Thursday 10/24
Due: Wednesday 10/30 11:59pm
- Phase 4 - Implementing the Referee and Players
Set: Thursday 10/31
Due: Wednesday 11/6 11:59pm
- Phase 5: Graphical Observers, Referee-Player Integration
Set: Thursday 11/07
Due: Thursday 11/14 11:59pm
- Phase 6: Client/Server
Set: Friday 11/15
Due: Monday 11/25 11:59pm
You can find the in-class group presentation schedule here.
Final Code Reviews
In lieu of a final, we will conduct an extensive code walk of your projects. If the course progresses on schedule, the final code walks will be held during the finals examination period. If the course progresses faster than anticipated, all final code walks will take place during the final week of classes.
The primary forum for this class is on Piazza, which you can use to ask questions and exchange wisdom while completing assignments. I will also use Piazza to broadcast announcements to the class, so you will be expected to check it at least every few days. Participate actively and use it as a first place to post questions related to assignments, programming, debugging, exams, etc. Please use the forum to post questions and answers that may be useful to others. Bottom line: unless you have a private problem, post to Piazza before writing me/the TA an email.
Please register for Piazza by going to http://piazza.com/northeastern/fall2019/cs4500fv and registering as a student.
The final grades are based on these factors:
- 54% project (incuding the final code walk)
- 16% warm-up assignments
- 20% presentations
- 5% lab book
- 5% participation
For the homework assignments, we will use flexible slip dates. Each student is given an automatic extension of 4 calendar days for the semester. You can use the extension on any assignment during the semester in increments of a day1. For instance, you can hand in one assignment 4 days late, or one assignment 2 days late and two assignments 1 day late. The slip time will be deducted from each group member’s remaining slip time.2 This should let you schedule due dates around the due dates for other courses. After you have used up your slip time, any assignment handed in late will be marked off 20% per day. Assignments more than 2 days late (beyond the use of slip days) will not be accepted. Extensions will not be granted.
It’s ok to ask your peers about the concepts, algorithms, or approaches needed to do the assignments. We encourage you to do so; both giving and taking advice will help you to learn. However, what you turn in must be your own, or for projects, your group’s own work. Looking at or copying code or homework solutions from other people or the Web is strictly prohibited. In particular, looking at other solutions (e.g., from other groups or students who previously took the course) is a direct violation. Projects must be entirely the work of the students turning them in, i.e. you and your group members. If you have any questions about using a particular resource, ask the course staff or post a question to the class forum.
All students are subject to the Northeastern University’s Academic Integrity Policy. Per Khoury College policy, all cases of suspected plagiarism or other academic dishonesty must be referred to the Office of Student Conduct and Conflict Resolution (OSCCR). This may result is deferred suspension, suspension, or expulsion from the university.
Accommodations for Students with Disabilities
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 www.northeastern.edu/drc and follow the outlined procedure to request services. If the Disability Resource Center has formally approved you for an academic accommodation in this class, please present the instructor with your “Professor Notification Letter” at your earliest convenience, so that we can address your specific needs as early as possible.
A “day” refers to 24 hours. Thus, a project turned in 28 hours late will count as two days late.↩︎
Note on slip days: Slip days can only be used if all group members have at least one remaining slip day. If not, the 20% off per day policy stated above will be used for all group members.↩︎