Intensive Program Design
Instructor | Office Hours | |
---|---|---|
Robby Findler | robby@cs |
Gladly by appointment |
Jesse Tov | jesse@cs |
Gladly by appointment |
General Information
The goal of Intensive Program Design is to make you a better programmer. We will ask you to forget everything you know about programming and then help build you up again, stronger than before. If you work hard, you will learn to apply a rational design process, to think more clearly about code, and to present your work effectively to others. To succeed, expect to spend a significant amount of time programming outside of class. Topics include data design, structure-oriented programming, testing and coverage, data structures and their analysis, systems programming, and resource management.
Prerequisites
None.
Materials
Online
-
The exercises and other important course information is on Canvas; see especially see the Modules section on Canvas.
-
Student library and language references:
- Library:
2htdp/image
- Library:
2htdp/universe
- Language: Beginning Student
- Language: Beginning Student with List Abbreviations
- Language: Intermediate Student
- Language: Intermediate Student with
lambda
- Library:
-
C references:
-
C++ references:
Books
Required textbook:
Suggested books:
-
Bjarne Stroustrup, Programming: Principles and Practice, Second Edition.
-
Scott Meyers, Effective Modern C++.
Software
In the first half of the course, we will be programming in several teaching languages that are part of the DrRacket programming environment. You should follow the setup instructions.
The second half of the course uses C++ 2014, a recent version of the C++ programming language. Follow the second set of setup instructions.
Coursework
The work in the class consists of three parts: watching videos, doing follow up exercises to the videos, and doing a series of projects. The videos and exercises are accessible via Canvas and the projects will be available in github. Looks for one of the videos (and attendent exercises) to explain how to find and submit the projects.
Each set of videos is collected into a module on Canvas.
Course Policies
Collaboration and Academic Integrity
You may not collaborate with anyone on any exam. You may not use any electronic tools, including phones, tablets, netbooks, laptops, desktop computers, etc. If in doubt, ask a member of the course staff.
Most projects will be completed with an assigned partner. You must pair program with your assigned partner, as specified, on projects. You may request help from any staff member on any coursework. (When you are working with a partner, we strongly recommend that you request help with your partner.) You may not get any help from anyone else in your coursework; all material submitted must be your own. If in doubt, ask a member of the course staff.
Providing illicit help to another student is also cheating, and will be punished the same as receiving illicit help. It is your responsibility to safeguard your own work.
If you read any actual code online that solves the same or a similar problem to the one we are asking you to solve, you must include a link to that code (or a citation of the publication you found it in) together with your project submission. Reading prose that describes the algorithm is fine; any and all code you read, however, must be documented. Failure to disclose the link (or citation) is considered cheating.
Students who cheat will be reported to the dean.
If you are unclear on any of these policies, please ask a member of the course staff.
Late Work
Late work is not accepted.
Grades
The projects are worth 75% of your grade and the exercises are worth 25%.
Exams
There are no exams.