The School of Computer Science


COMP 2404 (A) Fall 2017
Introduction to Software Engineering
(with C++)


Course Outline

Lectures Tue,Thu 4:00-5:30 location: Richcraft Hall 2200

(A1) Wed 11:30-1:00 location: HP 4155
(A2) Mon 6:00-7:30pm location: HP 4155
(A3) Fri 7:00-8:30pm location: HP 4155
(A4) Tue 7:00-8:30pm location: HP 4155
(you must attend the session you are registered in)

Instructor Louis Nel
TA/Lab Co-ordinator Vojislav Radonjic

Calendar Description:

Introduction to object-oriented software development, with emphasis on design and implementation of medium-sized programs. Topics include abstraction, modularity, encapsulation, reusability, and design patterns.

Topics include abstraction, modularity, encapsulation, reusability, and design patterns.

Precludes additional credit for COMP 2004 (no longer offered), SYSC 3010, SYSC 3110. Prerequisite(s): One of COMP 1406, COMP 1006 or SYSC 2004, with a minimum grade of C-. Students in the industrial applications internship option register in COMP 2404 Z*.

Course Description:

This course is an in-depth study of the programming model represented in C++, with emphasis on features supporting the development of large, efficient, and reusable object-oriented systems. This course also introduces foundations of Software Engineering including requirements management and development processes combining modeling with programming.


The follow are the topics we covered in the last offering and will be adjusted and updated as the course proceeds.


Course lectures and assignments are based on lecture notes available on the website and online sources. There is not an official text for the course that you need to buy but you are encouraged to seek out online resources. Some recommended books and web sites will be listed in the resources section of the course website.

Course Material Copyright Notice:

We remind you that lectures and course materials, including power point presentations, outlines, code examples and similar materials, are protected by copyright. The professor is typically the owner of copyright and intellectual property of the course materials unless otherwise noted. You may take notes and make copies of course materials for your own private (educational) use. You may not reproduce or distribute lecture notes and course materials publicly without the express written consent of the copyright holder.

(This notice has been added because course content has ended up on public sites like OneClass, Course Hero, or GitHub without permission.)


Our programming language for the course is C++. We are going to try and keep the course as OS agnostic as possible however restrictions might be imposed on the compiler used to evaluate your assignment code.

We have installed both the Visual Studio 2017 compiler and the GCC linux-based compiler on lab machines (HP 4155). Linux images are made available as Open Stack (cloud computing) images or as an image you car download and run locally on your own machine using Virtual Box. (see the course resources section for additional details). That lab windows machines and linux images should also have the CLion IDE installed in case you want to work with GCC through an integerated development system instead of the command line. Be aware however, that part of the course requirements will be knowing how to use the compilers directly through command line interfaces (like the linux bash shell).

In addition we will make use of SQLite databases and the SQLite sqlite3.exe command shell tool for modeling and manipulating assignment data. You will need to learn a bit of SQL but not much. Again see the course website resources section for more details.

The assignments and tutorials all involve programming and some code modeling and documentation.


This class has compulsory tutorials that you must attend once a week. The tutorials are an important part of the course and make up a substantial portion of the marks. The tutorial exercises will be posted ahead of time and you are expected to work on them before you come to the tutorial. At the tutorial you will demonstrate your results to the supervising TA's and likely be asked to make minor modifications and demonstrate those. Because you will be there to demonstrate your work it will enable you to work on your operating system of choice.


We will be using electronic submission of assignments using culearn.

Electronic submission enforces strict deadlines. Only assignments submitted through culearn will be accepted for marking. No assignments will be accepted late or directly by email or in other forms. TA's are instructed not to accept assignments directly.

Lab/TA Co-ordinator:

We have a Lab/TA co-ordinator, Voja Radonjic, assigned to this course offering.

The lab coordinator is responsible for organizing and overseeing the tutorial sections of the course and imposing submission requirements that will make the marking go as smoothly and efficiently as possible.

If you notice any mistakes within a tutorial, have issues with a tutorial teaching assistant, or have any other tutorial related questions, the lab coordinator should be your first point of contact. The lab coordinator is also responsible for distributing assignments to teaching assistants for evaluation. If you are missing an assignment grade or are unsure about the status of your assignment, you can contact the lab coordinator.

Teaching Assistants:

A schedule for TAs will be posted on the course website schedule section.

Marking Scheme:

deliverable value comment
Tutorials 20%

10 tutorials. Count best 8/10
(completed individually)

Assignments 30%

4,5 or 6 assignments equally weighted
(You may work in pairs if you want)

Midterm 10% In class (date TBA). (If your final exam mark is better than the midterm mark, the midterm mark will be replaced by the final exam mark)
Final Exam 40% Formally scheduled exam during exam period


There are no make up tutorials. You may miss two tutorials for medical or other reasons without penalty (we count the best 8/10). After that you will lose the marks for the missed tutorials.

Missed assignments or tests will score 0 unless it is for a medical, or similar, reason and is accompanied by official medical documentation. You will be excused from an assignment for medical reasons if accompanied by proper documentation.

If your final exam mark is better than the midterm mark we will replace the midterm mark with the final exam mark. Midterm or Exam marks will not be used to make up for missed, or poorly done, assignments or tutorials.

IMPORTANT: If you wish to appeal an assignment or midterm mark you must make the appeal within two weeks of the assignment mark being posted in culearn. After this we will not be obliged to entertain appeals or change marks.

Collaboration is encouraged but cheating, or copying, is not allowed. You may work together and consult but any work you hand in must be your own and judged to be unique. Any two assignments judged to be too similar will both receive a grade of 0, and will be handled as a formal academic offence -see calendar for details. Any assignment that contains substantial uncited content from outside sources will be handled similarly.

Course Web Page:

As well as being announced in class, all important information, such as course news, assignments, TA hours, instructor office hours, will be available on the course web page at It is your responsibility to check this web page frequently for new information and announcements. Paper copies of outlines and assignments will not be provided.


Student Academic Integrity Policy

Every student should be familiar with the Carleton University student academic integrity policy. A student found in violation of academic integrity standards may be awarded penalties which range from a reprimand to receiving a grade of F in the course or even being expelled from the program or University. Some examples of offences are: plagiarism and unauthorized co-operation or collaboration. Information on this policy may be found in the Undergraduate Calendar, Section 14, Page 59.


As defined by Senate, "plagiarism is presenting, whether intentional or not, the ideas, expression of ideas or work of others as one's own". Such reported offences will be reviewed by the office of the Dean of Science.

Unauthorized Co-operation or Collaboration

Senate policy states that "to ensure fairness and equity in assessment of term work, students shall not co-operate or collaborate in the completion of an academic assignment, in whole or in part, when the instructor has indicated that the assignment is to be completed on an individual basis". Please refer to the course outline statement or the instructor concerning this issue.

Academic Accommodation

You may need special arrangements to meet your academic obligations during the term because of disability, pregnancy or religious obligations. Please review the course outline promptly and write to your instructor concerning any requests for academic accommodation during the first two weeks of class, or as soon as possible after the need for accommodation is known to exist. It takes time to review and consider each request individually, and to arrange for accommodations where appropriate. Please make sure you respect these timelines particularly for in-class tests, midterms and final exams, as well as any change in due dates for papers. You can visit the Equity Services website to view the policies and to obtain more detailed information on academic accommodation at

Students with Disabilities Requiring Academic Accommodations Register with the Paul Menton Centre for Students with Disabilities (PMC) for a formal evaluation of disability-related needs. Documented disabilities could include but are not limited to mobility/physical impairments, specific Learning Disabilities (LD), psychiatric/psychological disabilities, sensory disabilities, Attention Deficit Hyperactivity Disorder (ADHD), and chronic medical conditions. Registered PMC students are required to contact the PMC, 613-520-6608, every term to ensure that I receive your Letter of Accommodation, no later than two weeks before the first assignment is due or the first in-class test/midterm requiring accommodations. If you only require accommodations for your formally scheduled exam(s) in this course, please submit your request for accommodations to PMC by the deadlines published on the PMC website:

Religious Obligation

Write to your instructor concerning any requests for academic accommodation during the first two weeks of class, or as soon as possible after the need for accommodation is known to exist. For more details visit the Equity Services website

Pregnancy Obligation

Write to your instructor concerning any requests for academic accommodation during the first two weeks of class, or as soon as possible after the need for accommodation is known to exist. For more details visit the Equity Services website

Medical Certificate

The following is a link to the official medical certificate accepted by Carleton University for the deferral of final examinations or assignments in undergraduate courses. To access the form, please go to