305272 Advanced Computer Programming
Academic Year 2008, Semester 2
Overview
In this course, the focus is on applying design patterns to develop software.
Students will learn how to discover the patterns and apply them in
another context. Although any programming language can be used in
this class, for
most of
the course, we will use Java as a vehicle to illustrate the concept. In
addition, the
software engineering practices are emphasized throughout the course. Quality is emphasized throughout the entire course.
Objective
This is an programming design course with emphasis on systematic thinking process. After completing this course, students should:- be able to use design patterns to guide the design.
- be able to apply the software engineering practices to computer programming.
- have data that show the improvement of their personal performance and the quality of their products.
Approach
Since this is a course focusing on design and discipline software engineering practices, not only are students encouraged to think creatively but they will have a lot of opportunity to practice the craft of professional software engineers. In order to get the most from this course:- Students are required to take notes and turn in the notes every week.
- Students must collect their personal data for self-improvement.
- Each week there will be at least two sets of assignments: one set will be used to reinforce the concept students just learn while the other sets will help students prepare for the upcoming subjects.
- Each week, there will be two sets of quizzes: one to check the understanding of the previous subjects and the other is used to prepare the students for the upcoming topics.
- There will be a term project that students must turn-in progress every week.
Reference
There is no official textbook for this class; students may refer to any books on how to design programs.Course Outline
The following schedule is tentative only; it may change depending on the circumstances.Week |
Topics |
1 |
Programming-in-the-large |
2 |
Designing complex programs |
3 |
Documenting design |
4 |
Thinking patterns |
5 |
Applying patterns |
6 |
Simple design verification techniques |
7 |
Implementing design |
8 |
Midterm
Exam |
9 |
Handling changes 1 |
10 |
Refactoring |
11 |
Recognizing patterns |
12 |
Reusing knowledge 1 |
13 |
Reusing knowledge 2 |
14 |
Handling changes 2 |
15 |
Thinking out-of-the-box |
16 |
Conclusion |
17 |
Final
Exam |
Evaluation
The course evaluation will be divided equally between examinations and assignments. The distribution of each half is shown below.Items | Weight |
Assignments | 40% |
Discussion | 10% |
Quiz | 10% |
Midterm Exam | 20% |
Final Exam | 20% |
Note that the above description is only tentative; it may change at the instructor's discretion.