Revised April 28, 2010

CS 246: Object-Oriented Software Development

General Description

Introduction to basic UNIX software development tools and object-oriented programming in C++ to facilitate designing, coding, debugging, testing, and documenting of medium-sized programs. Students learn to read a specification and design software to implement it. Important skills are selecting appropriate data structures and control structures, writing reusable code, reusing existing code, understanding basic performance issues, developing debugging skills, and learning to test a program.

Logistics

Intended for 2A students in Computer Science. Normally available Fall, Winter and Spring.

Related courses (see calendar for official details)

Predecessors: CS 136 or 138 (with at least 60%), 145 (before Fall 2011), or 146—programming in C.
Successors: CS 240 and CS 241. Through these, most CS upper-year courses.
Conflicts: Most courses that develop strong programming skills and the use of tools to create software.

Software used: Unix, C++.

Typical Reference(s): Course notes.

Required preparation

Students starting the course should have the ability to do the following.

Learning objectives

By the end of the course, students should have the ability to

Typical syllabus

The shell (4 hours)

file system, pattern matching, quoting, shell/system commands, file permission, redirection, shell programming.

C++ (16 hours)

declarations, expressions, control structures, structured programming, preprocessor, I/O, dynamic allocation, objects, overloading, inheritance, templates, STL, separate compilation.

Unix tools (8 hours)

compiler, debugging and the debugger (e.g., GDB), code management (e.g., make), version control (e.g., SVN).

Software engineering (8 hours)

development process, design (UML), language selection, patterns, testing*.

*Note to instructors: if you find yourself short of time, DO NOT drop the testing aspect; rather skimp somewhere else and present testing properly.


Campaign Waterloo

David R. Cheriton School of Computer Science
University of Waterloo
Waterloo, Ontario, Canada N2L 3G1

Tel: 519-888-4567 x33293
Fax: 519-885-1208

Contact | Feedback: cs-uops@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics


Valid HTML 4.01!Valid CSS! Last modified: Tuesday, 20-Mar-2012 12:02:18 EDT


Menu:ShowHide