CS138 - Introduction to Data Abstraction and Implementation

CS138 Introduction to Data Abstraction and Implementation


Course Description / Outline

This course introduces software engineering students to elementary data structures and their implementation. Software abstractions via elementary data structures and their implementation; encapsulation and modularity; class and interface definitions; object instantiation; recursion; elementary abstract data types, including sequences, stacks, queues, and trees; implementation using linked structures and arrays; vectors and strings; memory models; automatic vs. dynamic memory management.

Textbooks (All Optional):

Absolute C++, 6th ed., by Savitch (Addison-Wesley)
(Any "good" introduction C++ should suffice.)


Lecture Content

Introduction (3 hours)
Operating system and Unix concepts, programming language concepts

Introduction to C++ concepts (3 hours)
C++ basics, basic types, IO
Use of simple library elements (string, vector)

ADT and their implementations as linked structures (12 hours)
The stack, queue, and priority and queue ADTS
The linked list, sorted linked list
Trees, binary trees, binary search trees
The C/C++ memory model: pointers vs references, stack vs freestore
Implementing and travesing linked structures
Recursion and stack frams
Recursive vs iterative solutions to ADTs
Space and time complexity of solutions
Simple testing and debugging strategies

Object-based computing (9 hours)
Interface vs implementation
Class definitions, instantiation, object construction and destruction
Objects vs pointers to objects
Interface design and abstraction, responsibility allocation
The adapter design pattern

Introduction to object-oriented programming (9 hours)
Introduction to inheritance and its implementation in C++
Introduction to generics, type parameterization, and C++ templates
The template method design pattern
Use of generic data containers and the Standard Template Library
Design heuristics and strategies for object-oriented programming

Course Calendar

TIME Mon Tue Wed Thu Fri

Lecture and Tutorial Sections

Sec Time Room Instructor
LEC 001 9:30-10:50 Tu/Th MC 1085 Michael Godfrey
TUT 001 4:30-5:20 Wed MC 1085 Calvin Wang

Office Hours

Time Room Instructor
12:30-13:30 Tues DC 2340 Michael Godfrey
12:30-1:30 Weds MC 4065 Calvin Wang
2:30-3:30 Fris MC 4065 Calvin Wang

If you like, you can query the school server for the most up to date class schedule.


Course Policies / Rules

Please familiarize yourself with the policies outlined here before you direct any questions to the course account or staff.

Late policy:

An assignment not handed in receives a mark of 0, unless there is a documented reason. If a documented reason is approved, the weight of the missing assignment is distributed across the other assignments. All illness related issues will require a verification of illness form, signed by a doctor. See the PDF here

Assignment Submissions and Pickup:

Assignments must be submitted using Marmoset, secret test results are available post-dealine.
No assignments need to be picked up, new assignments appear in the downloads section after release.
MOSS will be used to check for copied assignments / plagiarism.

Remarking Policy

Requests for remarking an assignment must be submitted to the ISA via the course email at most two weeks after the assignment is marked. Include any supporting evidence for your case. Minor code changes (~5 lines) to fix failing test cases may be permitted, but won't receive full marks. Major changes will be ignored. Re-marking is intended for situations where minor changes result in major mark boosts (i.e. a forgotten semicolon failed 4/5 secret cases).

To request a midterm remark, please fill this form and submitted it to the ISA via email.

Rules for Group Work:

There will be no group work allowed on any assessments (graded or not). Please see university policies about academic integrity.


University Policies

Academic Integrity: In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [Check www.uwaterloo.ca/academicintegrity/ for more information.]

Intellectual Property Students should be aware that this course contains the intellectual property of their instructor, TA, and/or the University of Waterloo. Intellectual property includes items such as:

  • Lecture content, spoken and written (and any audio/video recording thereof);
  • Lecture handouts, presentations, and other materials prepared for the course (e.g., PowerPoint slides);
  • Questions or solution sets from various types of assessments (e.g., assignments, quizzes, tests, final exams); and
  • Work protected by copyright (e.g., any work authored by the instructor or TA or used by the instructor or TA with permission of the copyright owner).

Course materials and the intellectual property contained therein, are used to enhance a student's educational experience. However, sharing this intellectual property without the intellectual property owner's permission is a violation of intellectual property rights. For this reason, it is necessary to ask the instructor, TA and/or the University of Waterloo for permission before uploading and sharing the intellectual property of others online (e.g., to an online repository).

Permission from an instructor, TA or the University is also necessary before sharing the intellectual property of others from completed courses with students taking the same/similar courses in subsequent terms/years. In many cases, instructors might be happy to allow distribution of certain materials. However, doing so without expressed permission is considered a violation of intellectual property rights.

Grievance: A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4, www.adm.uwaterloo.ca/infosec/Policies/policy70.htm. When in doubt please be certain to contact the department's administrative assistant who will provide further assistance.

Discipline: A student is expected to know what constitutes academic integrity [check www.uwaterloo.ca/academicintegrity/] to avoid committing an academic offence, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about 'rules' for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline, www.adm.uwaterloo.ca/infosec/Policies/policy71.htm0. For typical penalties check Guidelines for the Assessment of Penalties, www.adm.uwaterloo.ca/infosec/guidelines/penaltyguidelines.htm.

Appeals: A decision made or penalty imposed under Policy 70 (Student Petitions and Grievances) (other than a petition) or Policy 71 (Student Discipline) may be appealed if there is a ground. A student who believes he/she has a ground for an appeal should refer to Policy 72 (Student Appeals) www.adm.uwaterloo.ca/infosec/Policies/policy72.htm.

Note for students with disabilities

The Accessibility Services Office (AS), located in Needles Hall, Room 1132, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with the AS at the beginning of each academic term.


More Information

Academic Integrity and Students with Disabilities