COMP 303: Software Design
Instructor: Jin
Guo
Class Time: TR 4:05 PM - 5:25 PM
Location: Bronfman Building 151
Office Hour: Instructor: Wednesday 10am-11am,
MC328
TAs:
see below.
This course provides an in-depth introduction
to the discipline of software design for building realistic and high-quality software
applications. It will focus on object-oriented programming techniques, and
cover topics related to managing software complexity and verifying that they
work as expected. It will use Java for all the code examples and assignments.
However, the considerations during the design process apply in all languages
for practical software development.
After completing this course successful
students should be able to:
•
Properly
explain and apply general Design Principles (separation of concerns,
encapsulation, substitutability, interface segregation, etc.) and important
Design patterns;
•
Properly
explain and apply design techniques such as UML Diagrams and Design by
Contract;
•
Effective
use programming language mechanisms such as exception handling, concurrency and
synchronization, reflection;
•
Analyze
and evaluate the quality of design solutions; correctly identify design smells
and apply appropriate refactoring to eliminate them;
•
Gain
experience on software development tools such as modern IDEs (Eclipse),
automatic documentation and testing tools (JUnit and JavaDoc)
and version control system (Git).
·
Introduction to Software Design
with Java, by Martin Robillard, lecture note for COMP 303. (LN)
·
The
Pragmatic Programmer by Andrew Hunt and David Thomas, Addison-Wesley,
2000. (PP)
·
Effective
Java by Joshua Bloch, 2nd ed., Addison-Wesley, 2008; 3rd
ed. 2018. Either edition is fine. (EJ)
While
I recommend you buy physical books,
the eBooks can be accessed following the instruction here.
COMP 206 and COMP 250
Name |
Email Address |
Mathieu Nassif |
|
Cheryl Wang |
|
Deeksha Arya |
|
Shi Yan Du |
|
Alexander Nicholson |
|
Kian Ahrabian |
Time |
TAs |
Tuesday 2pm - 3pm |
Mathieu Nassif ,
Deeksha Arya |
Wednesday 1pm – 2pm |
Alexander Nicholson, Kian Ahrabian |
Friday 1pm - 2pm |
Shi Yan Du, Cheryl Wang |
Location: Trottier 3104
Assessment Method |
When |
Weight |
Participation |
in class + online |
10% |
Lab tests |
4 sessions (Trottier 3120) |
20% |
Midterm |
Feb 28th |
30% |
Final |
Apr 30th, 9am |
40% |
· It’s important to attend the lectures
in order to gain the best learning experience – it cannot be replaced by
watching the videos afterward. There will be random participation/attendance
sheets to collect during this semester;
· Our TA will try their best to support
your learning. But considering this is a big class – many of you will have
similar questions or concerns and many of you have will answers to other
people’s questions, we encourage you to discuss your questions about the
lectures and exercises online;
· The participation during the class and
the online discussion will count 10% of your final grades; The top 10%
contributors for the online discussions will gain bonus credits of 3%;
· Every part of the lecture will come
with assignments and exercises. Those are for your practice and will not be
graded. Instead, your practical skills will be evaluated through 4 lab tests
that count 20% of your final grades.
· Lab tests start week four. You are responsible
to book the slot of lab test for each session in advance with the TAs.
· Missing any of the lab test sessions,
midterm or final exam will result zero grade for that assessment.
· Any form of plagiarism, cheating is
strictly banned during midterm or final exam. Integrity is crucial to this
course and your future career. Any violation against academic integrity will be
taken very seriously. For more information, please refer here.
Week |
Date |
Content |
Reading/Reference |
1 |
Jan 8th |
Introduction |
ACM
Code of Ethics and Professional Conduct LN:M0, PP:1, 6 |
Jan 10th |
M1-Encapsulation - 1 |
LN:M1, EJ3:15, 16, 17, 57, |
|
2 |
Jan 15th |
M1-Encapsulation - 2 |
LN:M1, PP:4, 21, 23, 24, 44, EJ3:56,
68, 71 |
Jan 17th |
M2-Types and Polymorphism -1 |
LN:M2, PP:8, EJ3:14, 22, 64 |
|
3 |
Jan 22nd |
M2-Types and Polymorphism - 2 |
LN:M2, EJ3:24, 26, 29, 30, 31 |
Jan 24th |
M2-Types and Polymorphism - 3 |
LN:M2 |
|
4 |
Jan 29th |
M3-Object State - 1 |
LN:M3, EJ3: 10, 11, 54, 55 |
Jan 31st |
M3-Object State - 2 |
LN:M3, EJ3: 1, 3 |
|
5 |
Feb 5th |
M4-Unit Testing - 1 |
LN:M4, PP:34 |
Feb 7th |
M4-Unit Testing - 2 |
LN:M4, PP:43 |
|
6 |
Feb 12th |
M5-Composition - 1 |
LN:M5, EJ3: 13 |
Feb 14th |
M5-Composition - 2 |
LN:M5, PP: 26 |
|
7 |
Feb 17th |
M6-Inheritance - 1 |
LN:M7, EJ3:19,20 |
Feb 19th |
M6-Inheritance - 2 |
LN:M7, EJ3:18 |
|
8 |
Feb 26th |
Content Review |
|
Feb 28th |
Midterm |
|
|
9 |
|
Study Break |
|
10 |
March 12th |
Midterm Review |
|
March 14th |
M7-Inversion of Control - 1 |
LN: M6 |
|
11 |
March 19th |
M7-Inversion of Control - 2 |
LN: M6 |
March 21st |
M8-Design Patterns - 1 |
Design
Patterns GOF book Visitor Pattern |
|
12 |
March 26th |
M8-Design Patterns- 2 |
|
March 28th |
M9-Concurrency - 1 |
Java
Concurrency in Practice Chapter 1,2,3 |
|
13 |
April 2nd |
M9-Concurrency - 2 |
|
April 4th |
M10-Refactoring |
||
14 |
April 9th |
M11-Design for Usability |
|
April 11th |
M11- Software Engineering Ethics and Wrap-up |
|