This is a course in which you'll design and implement lots of programs. You'll learn both low-level and high-level idioms and patterns of programming that will make you wonderful, intelligent programmers and designers.
You'll learn about optimizations for people and for computers. You'll become more adept at object oriented design and programming. You'll learn that doing things simply is a wonderful way to start.
If you do not have experience programming with C++ as learned in CPS 100, this probably is not the right course for you. See the professor if you have questions.
The Pragmatic Programmer, by Andrew Hunt and David, Addison-Wesley, ISBN: 0-201-61622-X | |
Design Patterns Explained, by Alan Shalloway and James Trott | |
Java How To Program by Deitel and Deitel, Fifth Edition, Prentice-Hall, ISBN 0131016210 |
Grading
This is primarily a programming course. Accordingly, your grade is
based primarily on how well you do on several programming projects.
However, there will be two tests that count for a small
percentage of your grade (at least one test will
be in-class). Part of the grade is also based on small
writeups of readings that will be turned in, and on class participation.
There are two kinds of programming project: group projects and mastery projects. Mastery projects will often be done in groups of two, but you cannot work with the same person on more than one mastery. Mastery programs will be worked on individually. Sometimes groups will be formed to combine the efforts of two people, but the "groupness" of a mastery won't be decided until soon before it is due. Each mastery group will be required to turn in a single program that will be evaluated.
All non-mastery programs are group projects. The mastery projects are designed to ensure that that everyone who completes the course is "certified" as capable of writing and understanding reasonably complex C++ and Java programs.
There will be one small project (Java and C++), one medium project (Java and C++) and one large project (Java). There will be some optional mastery projects whose completion is required for an A.
Project Artifact
For each project you (your group) should have a small three-ring
notebook that contains:
You must develop a software portofolio for each project you do.
Mastery exams | 25% |
Readings, Participation, Writeups | 5% |
Tests | 10% |
Small group project | 10% |
Medium group project | 20% |
Large group project | 30% |
In general, to earn an A on any assignment you must go beyond what is expected. Meeting all requirements is a B+. Meeting all requirements superbly can earn an A-. Doing more than is required, or doing astonishingly good work will earn an A.
1 | poor, little indication of effort |
2 | ok, on track, but needs real work |
3 | good, functional, some room for improvement, complete |
4 | very good/superb, complete |
5 | outstanding |