COMP SCI 2S03/SFWR ENG 2S03 Course Outline

Principles of Programming



  • A solution for the final is posted.
  • ===========================================================================


    Dr. Sanzheng Qiao
    ITB/246, ext. 27234,

    Office Hours

    Thursdays 15:00-16:00
    You can always email me to set up an appointment. You are also welcome to drop by my office at other times and check if I am available.

    Course Assistance

    Yin, Xiang (yinx5)
    Hussain, Wisam (hussaiwh)

    BOKHARI, Asghar (bokhari), Drop-in Centre, ITB/242
    NAKAMURA, John (nakamura), Drop-in Centre, ITB/242


    Term I, 2011-2012
    C01 Mo, We, Th, 17:30-18:20, MDCL/1105
    T01 Tu, 12:30-13:20, ETB/224 Ponce, Laura,
    T02 We, 10:30-11:20, ETB/224 Yin, Xiang,
    T03 We, 10:30-11:20, ETB/227 Hussain, Wisam,
    T04 Mo, 14:30-15:20, ETB/224 Qian, Zhizhao,
    T05 Mo, 14:30-15:20, ETB/228 Jeremic, Filip,

    Calendar Decription

    Fundamental concepts of imperative programming (procedures, statements, control structures, iteration, recursion, exceptions); basic data structures (references, records, arrays, dynamic structures); basic concepts of operating systems.
    Prerequisites COMP SCI 1MD3 or ENGINEER 1DO4
    Antirequisites COMP ENG 2SH4, COMP SCI 2SC3

    Course Objectives

    By the end of this course students will be able to understand

    the concept of an interface and the principles of designing and writing well-documented and well-structured programs.

    recursion and applications.

    the relation between efficiency and data representation.

    basic concepts of operating systems.


    An overview of C++;

    Data types in C++;

    Libraries and interface;

    Using abstract data types;

    Introduction to recursion;

    Recursive procedures;

    Backtracking algorithms;

    Algorithmic analysis;

    Classes and objects;

    Efficiency and data representation;

    Linear structures;

    Implementing maps;


    Basic concepts of operating systems.

    Evaluation Scheme

    five programming assignments, 35%
    midterm examination (one-hour, closed book), 20%
    final examination (two-hour, closed book), 45%

    Course Material

    Eric S. Roberts and Julie Zelenski. Programming Abstraction in C++. Beta testing with permission.

    Blank projects

    Alternatively, you can directly download the above material from Stanford
    Also, there are notes on using Visual Studio and XCode.

    Visual Studio C++ 2008 express can be downloaded from


    Only the McMaster Standard calculator will be permitted in tests and examinations. This is available at the McMaster Bookstore.

    Academic Dishonesty

    You are expected to exhibit honesty and use ethical behaviour in all aspects of the learning process. Academic credentials you earn are rooted in principles of honesty and academic integrity.

    Academic dishonesty is to knowingly act or fail to act in a way that results or could result in unearned academic credit or advantage. This behaviour can result in serious consequences, e.g. the grade of zero on an assignment, loss of credit with a notation on the transcript (notation reads: "Grade of F assigned for academic dishonesty"), and/or suspension or expulsion from the university.

    It is your responsibility to understand what constitutes academic dishonesty. For information on the various types academic dishonesty please refer to the Academic Integrity Policy, located at

    The following illustrates only three forms of academic dishonesty:

    Plagiarism, e.g. the submission if work that is not one's own or for which other credits has been obtained.
    Improper collaboration in group work.
    Copying or using unauthorized aids in tests and examinations.

    In case of discrepancy between the online and handout version of the course outline, the handout version shall be taken as correct.

    Faculty Notices

    "The Faculty of Engineering is concerned with ensuring an environment that is free of all discrimination. If there is a problem, individuals are reminded that they should contact the Department Chair, the Sexual Harrassment Officer or the Human Rights Consultant, as the problem occurs."


  • Week 1: Introduction
  • Week 2: An Overview of C++ (ch01.pdf)
  • Week 3: Data Types in C++ (ch02.pdf)
  • Week 4: Libraries and Interfaces (ch03.pdf)
  • Week 5: Using Abstract Data Types (ch04.pdf)
  • Week 6: Introduction to Recursion (ch05.pdf)
  • Week 7: Recursive Procedures (ch06.pdf)
  • Week 8: Backtracking Algorithms (ch07.pdf)
  • Week 9: Algorithmic Analysis (ch08.pdf)
  • Week 10: Classes and Objects (ch09.pdf)
  • Weeks 11-12: Efficiency and Data Representation (ch10.pdf)
  • Week 13: Heap-stack Diagram (heapstack.pdf)
  • Midterm, Oct. 13, Thur., 17:30-18:20, MDCL/1102 (A--K), T28 (L--Z)

    2011-2012 midterm

    Final, Dec. 20, Tue., 12:30-14:30, IWC 1

    Office hours: Dec. 19, 14:00-16:00, ITB222
    2011-2012 final


  • Assignment Mechanics
  • Assignment 1, due 9/22, Thursday, 17:30.
    TA: Hussain, Wisam (
    Solutions: PE0106.cpp, PE0107.cpp, PE0109.cpp
  • Assignment 2, due 10/5, Wednesday, 17:30.
    TA: Yin, Xiang (
    Solutions: PE0211.cpp, PE0214.cpp, PE0303.cpp
  • Assignment 3, due 10/26, Wednesday, 17:30.
    TA: Hussain, Wisam (
    Solutions: PE0408.cpp, PE0413.cpp, PE0510.cpp
  • Assignment 4, due 11/09, Wednesday, 17:30.
    TA: Yin, Xiang (
    Solutions: PE0605.cpp, PE0615.cpp, PE0707.cpp
  • Assignment 5, due 12/01, Thursday, 17:30.
    TA: Hussain, Wisam (
    Solutions: PE0803.cpp, PE0805.cpp,
    PE0906.cpp, scanner.h, scanpriv.h, scanner.cpp,
    PE1012.cpp, buffer.h, bufpriv.h, listbuf.h
  • Marks

    SEA1, SEA2, SEMid, SEA3, SEA4, SEA5
    CSA1, CSA2, CSMid, CSA3, CSA4, CSA5

    Back to S. Qiao's home page