Skip to content
Course Portal for COMP303 Winter 2020
Branch: master
Clone or download
Jin Guo
Latest commit 22fe8ba Jan 17, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Slides Add slides for M2-a Jan 17, 2020
M0-Exercise.md Update M0-Exercise.md Jan 9, 2020
README.md Update README.md Jan 17, 2020

README.md

COMP303 Winter2020

General Information

Instructor  Jin Guo
Class Time WF 2:35 pm - 3:55 pm (No class recordings)
Location Strathcona Anatomy & Dentistry M-1
Office Hour Instructor: Wednesday 9am-10am, MC328
TA: See below
Discussion Forum Piazza link

Description

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.

Expected Outcome

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 and 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, automatic documentation and testing tools, and version control system.

Reference Material

Prerequisites

COMP 206 and COMP 250. Please also perform the self assessment within the first week of the class to determine if you are ready to take this course.

Teaching Assistant Team

Name Email Address
Deeksha Arya deeksha.arya@mail.mcgill.ca
Meng Cao meng.cao@mail.mcgill.ca
Fuyuan Lyu fuyuan.lyu@mail.mcgill.ca
Srinivas Venkattaramanujam srinivas.venkattaramanujam@mail.mcgill.ca
Alison Li alison.li2@mail.mcgill.ca
Aaron Sossin aaron.sossin@mail.mcgill.ca
Eric Liu eric.liu2@mail.mcgill.ca

TA Office and Lab Hours

Location: TR 3120

Time TA
Monday 10 am to 12 pm Fuyuan
Tuesday 10 am to 12 pm Meng
Tuesday 12 pm to 2 pm Aaron
Wednesday 10:30 amto 12:30 pm Eric & Srinivas
Thursday 1 pm to 3 pm Deeksha
Friday 8 am to 10 am Alison

Assessment and Evaluation:

Assessment Method When Weight
Participation in class + online 10%
Lab tests 4 sessions (Location TR 3120. Schedule can be viewed here) 20%
Midterm 6:15 pm - 8: 15 pm, Feb 27th (LEA 132) 30%
Final TBD 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 collected 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 20% contributors for the online discussions will gain bonus credits based on the amount of contribution, up to 3%;
  • Every module of the lecture will come with exercises provided by the textbook. 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. 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.

Schedule (Tentative)

Subject to minor adjustments

Lecture Date Content Reading Exercise
1 8 Jan Introduction SD: Chapter 1 Exercise 0
Exercise in SD: Chapter 1
2 10 Jan Encapsulation - 1 SD: Chapter 2 Exercise 1-5 in SD: Chapter 2
3 15 Jan Encapsulation - 2 EJ: Item 15-17 Exercise 6-9 in SD: Chapter 2
(omit the exercise related to Design by Contract and Assertion which will be introduced later in the course)
4 17 Jan Types and Polymorphism - 1 SD: Chapter 3
5 22 Jan Types and Polymorphism - 2
6 24 Jan Types and Polymorphism - 3
7 29 Jan Object State - 1
8 31 Jan Object State - 2
9 05 Feb Defensive design - 1
10 07 Feb Defensive design - 2
11 12 Feb Unit Testing - 1 (Instructor Traveling)
12 14 Feb Unit Testing - 2 (Instructor Traveling)
13 19 Feb Composition - 1
14 21 Feb Composition - 2
15 26 Feb Content Review (by TAs)
M 27 Feb Midterm (no class on 28th)
16 11 Mar Composition - 3
17 13 Mar Inheritance - 1
18 18 Mar Inheritance - 2
19 20 Mar Inversion of Control - 1
20 25 Mar Inversion of Control - 2
21 27 Mar Inversion of Control - 3
22 1 Apr Refactoring
23 3 Apr Design for Usability
24 8 Apr Software Engineering Ethics
25 14 Apr Wrap up

Survey links

Class 1

You can’t perform that action at this time.