SYSC2006 CourseOutlineWinter25
SYSC2006 CourseOutlineWinter25
1) Course Description
The imperative programming paradigm: assignment and state, types and variables,
static and dynamic typing. Memory management and object lifetimes: static allocation,
automatic allocation in activation frames, dynamic allocation. Function argument
passing. Recursion. Data structures: dynamic arrays, linked lists. Encapsulation and
information hiding.
2) Prerequisites
3) Prior Knowledge
Students should:
• know the fundamental concepts of procedural programming, using Python as the
programming language.
• have gained practical experience using some lightweight, modern software
engineering practices in a team environment to design and implement small-scale
programs.
• have developed a "mental model" of computation; in other words, learned how to
reason about and visualize the execution of program code.
• understand the use of software experiments as an aid to learning.
• have a basic understanding of unit testing.
4) Course Objectives
The objective of this course is to learn the concepts that underlie most imperative
programming languages, and understand how these concepts are supported by the C
programming language. By the end of the course, students should be able to apply this
knowledge to learn new programming languages. The course will also introduce
students to the design, implementation, and application of data structures; specifically,
dynamic arrays and linked lists.
This course prepares students to undertake a course that provides a thorough
introduction to object-oriented programming principles. It also prepares students to
undertake a course that provides a comprehensive introduction to abstract data types
and data structures.
https://engineerscanada.ca/.
Choice 1: Problem Solving and Programming in C, 8th Edition, J. Hanly and E. Koffman,
2016. ISBN-13: 9780134015071.
The first choice is recommended for anyone who struggled with programming in their first-
year courses.
Choice 2: The C Programming Language, Second Edition, B. W. Kernighan and D.
Ritchie, Prentice Hall, 1988, ISBN-10: 0131103628, ISBN-13: 9780131103627.
One of the authors (Ritchie) was the original developer of C. The second edition of this
book describes the first standard version of C, which is often referred to as ANSI C (C89)
or ISO C (C90). The book has not been updated to reflect newer versions of the language.
However, it is still widely used and is regarded by many as being an authoritative
reference on C. This book is cited as an example of clear technical writing, but it is
concise, and thus recommended for those who find programming relatively easy.
Software
Learning how to trace and explain the execution of short programs is an important learning
outcome in this course. C Tutor is a free Web-based tool that helps us visualize what
happens as the computer executes each line of a program's source code, step-by-step.
We have used the Python visualization tool hosted at this site for several years in SYSC
1005, ECOR 1051, and ECOR 1041/42. Support for visualizing C program execution was
added recently, and although it has some "rough edges," we have used it in recent
offerings of SYSC 2006, and feedback from students has been positive.
VS Code will be the preferred IDE for the course, but you are welcome to use another
IDE as long as your code adheres to the C standard. The advantage of using VS Code
over other IDEs is that it works on all platforms (Windows, MacOS, and Linux). Also, it is
one of the most commonly used IDEs in the industry. Detailed installation instructions will
be provided during the first lab.
8) List of Topics
• Fundamental elements of imperative programming languages using C as the
implementation language: types, variables, expressions, control flow: conditional
statements, iteration (loops), functions.
• Function calls and parameter-passing mechanisms. Visualizing the program
state by drawing memory diagrams containing activation frames (activation
records) that depict function parameters and local variables.
• Structuring data: arrays and structures
• Motivation for modular programming. Modules: interface vs. implementation:
• Modules in C: header (.h) and implementation (.c) files. The C preprocessor.
Compiling and linking C programs comprised of several modules. A brief
overview of the standard C library.
• C pointers:
• The & and * operators. Passing pointers to local variables as function
arguments.
• Relationship between arrays and pointers.
• Pointers to structures as function arguments. The -> operator.
• Drawing memory diagrams to explain how pointers, pointers to arrays, and
pointers to structures are passed as function arguments.
• C character strings.
• Introduction to dynamically-allocated memory and the heap:
• Heap management in C: malloc and free. Drawing memory diagrams to explain
how parameters and local variables in activation frames can point to memory
blocks allocated on the heap. Memory leaks. Dynamically allocated structs.
• Dynamically-allocated arrays, dynamic arrays:
• Case study: C implementation of a list collection using a dynamic array.
• Linked lists:
• Implementing linked lists in C using structs and pointers.
• Drawing memory diagrams to understand the fundamental operations on singly-
linked lists.
• Applications of linked lists. Abstract data types (ADTs). Examples may include
stacks, queues, and hash tables.
• Introduction to recursion.
9) Course Schedule
Tentative Week-by-Week Breakdown
Most of the code examples will be written in C, but for comparison purposes, code written
in other languages (e.g., Python) may be presented.
Lecture Topic
1 Course Introduction
Imperative Programming. Introduction to C
2 Variables and Data Types. Operands, expressions, data conversion
3 Flow of control
4 Function basics. Pass-by-value. Memory diagrams. Recursive
Functions
5 How do we organize functions in files? The C preprocessor. Compiling
and linking C programs with several modules. Compiler directives. Local
vs. global variables
6 Arrays and Arrays Memory diagrams
7 Pointers. Pointers and Functions. Pass-by-value vs Pass-by-reference
8 Arrays: Pointers and Functions
9 Structures
10 Structures: Pointers and Functions
11 Strings
12 User input and output. A brief overview of the standard C library.
13 Midterm Review
14 Midterm (during lecture time)
15 Dynamic Memory Allocation (I)
16 Dynamic Memory Allocation (II)
17 Linked Lists (I)
18 Linked Lists (II)
19 Linked Lists (III)
20 Stacks
21 Queues (I)
Commented [CR1]: What do you think about the Bonus
22 Queues (II) percentages?
23 Hash Tables and Dictionaries (I) I made the Bonus assignments high to give them the chance
24 Hash Tables and Dictionaries (II) to recover from poor marks on the assignment. Last year,
the bonus on assignment 1 was an small enhancement and
25 Review and practice exercises giving them the chance to fix all the errors highlighted by the
TAs. Despite having a large bonus, less than 50% of the class
completed it during the winter term...
10) Evaluation and Grading scheme
Commented [LM2R1]: So those who did the assignments
Students will be evaluated using laboratory work, assignments, a midterm exam, and a perfectly still have a chance to resubmit (i.e. do the
final exam. A numeric mark out of 100 will be calculated by weighting the course enhancement)? 6% seems like a *lot* -- how about 3?
components as shown in this table: Commented [LM3R1]: And what if a student didn’t
submit the original assignment – they should also be able to
Component Weight submit something to get bonus?
This mark will be converted to a letter grade (using the table of percentage equivalents
shown in the Undergraduate Calendar, Academic Regulations of the University, Section
5.4, Grading System) as long as the student meets the requirements stated below.
Otherwise, the student’s grade will be an F.
Requirement for all students: To pass the course (i.e., D- or higher), students must
pass the final exam (i.e., achieve at least 30/60).
Requirements for students writing the deferred final exam: Students who are
approved for a deferred final exam by the Registrar's office must have achieved the
grades below on the listed course components to be eligible to pass the course:
Note: SYSC 2006 with a minimum grade of C- is a prerequisite for SYSC 2100 and Commented [LM7R5]: I adjusted the numbers – feel free
SYSC 3310 to change again 😊.
Commented [CR8R5]: I agree with your numbers. I would
Breakdown of course requirements have go with 5/13 on the assignments, but I am okay with 4.
They add up to 20 which is the minimum they need in the
course if they get 30/60 on the deferred. So, I like it ☺️
Attendance
Commented [LM9R5]: That was a fluke (that it adds up to
Students are expected to attend all lectures and lab periods. The University requires 20) 😉 !
students to have a conflict-free timetable. For more information, see the current
Undergraduate Calendar, Academic Regulations of the University, Section 2.1.3, Course
Selection and Registration and Section 2.1.7, Deregistration.
toward your grade. All labs are equally weighted. Your lab work will normally be graded
during your scheduled lab period. You must submit your lab work to Brightspace Commented [CR13R12]: It should now be fixed. Can you
check again?
before showing it to the TA for your grade to count. Extensions will not be granted.
If your code does not run or has a run time error, you will receive 0 for your submission.
will not be modified. Extensions will not be granted. Commented [CR17R16]: It was off. Is it fixed? I think
sometimes a small change somewhere, changes other parts.
If it is ready, feel free to resolve and generate the PDF.
Exams: Midterm (20%) and Final (60%) If not solved, or if something else got “broken” I will keep
The midterm and final exams will be held in person on Campus to assess your individual trying ☺️
learning. Exams will be written on paper. Each exam will cover all material covered up Commented [LM18]: Can you check the indentation – this
to that point in the course. Both the midterm and final exams will be closed-book and part seems “off” too.
proctored. No calculators will be allowed. You will be expected to complete the exams
on your own, without any support from or communication with others. Detailed instructions Commented [CR19R18]: It was off. It should now be
okay. You are very good catching these things! ☺️ I couldn’t
about the midterm and final exams will be posted on Brightspace. see it until I clicked on the properties.
Commented [LM20R18]: It jumps out at me (must be my
Requests to increase the weight of the final exam because of poor performance in OCD!)
the midterm, assignments, or labs, with a corresponding reduction in the weight of
the other component(s), will not be considered.
Final exams are for evaluation purposes and will not be returned/discussed with
students.
For labs and assignments, extensions will normally not be granted. They are posted
in advance, and students have a long period of time to work on them. Normally, requests
after the submission deadline will be denied.
Students who are unable to write the midterm exam because of illness or other
extenuating circumstances beyond their control can request to get the weight of the
midterm added to the weight of the final exam. These requests must be made no later
than 3 days after the exam date and must be fully supported by appropriate
documentation. These students can also request permission to write the midterm at a
later date. These exams will be graded to provide feedback, but the mark will not be used
when calculating the final grade.
Copyright
The materials (including the course outline and any slides, posted notes, videos, labs,
project, assignments, quizzes, exams and solutions) created for this course and posted
on this web site are intended for personal use and may not be reproduced or redistributed
or posted on any web site without prior written permission from the author(s).
Academic Accommodations
You may need special arrangements to meet your academic obligations during the term.
For an accommodation request the processes are as follows:
Pregnancy obligation: Contact us with 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 accommodation regarding a formally-scheduled
final exam, you must complete the Pregnancy Accommodation Form (click here).
Religious obligation: Contact us with 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 click here.
Academic Accommodations for Students with Disabilities: The Paul Menton Centre
for Students with Disabilities (PMC) provides services to students with Learning
Disabilities (LD), psychiatric/mental health disabilities, Attention Deficit Hyperactivity
Disorder (ADHD), Autism Spectrum Disorders (ASD), chronic medical conditions, and
impairments in mobility, hearing, and vision. If you have a disability requiring academic
accommodations in this course, please contact PMC at 613-520-6608 or [email protected]
for a formal evaluation. If you are already registered with the PMC, contact your PMC
coordinator to send us your Letter of Accommodation at the beginning of the term, and
no later than two weeks before the first in-class scheduled test or exam requiring
accommodation (if applicable). After requesting accommodation from PMC, contact us, if
needed, to ensure that accommodation arrangements are made.
You should request your academic accommodations in the Ventus Student Portal, for each
course at the beginning of every term. For in-term tests or midterms, please request
accommodations at least two (2) weeks before the first test or midterm.
Please consult the PMC website for the deadline to request accommodations for the
formally-scheduled exam (if applicable).
Survivors of Sexual Violence: As a community, Carleton University is committed to
maintaining a positive learning, working and living environment where sexual violence will
not be tolerated, and where survivors are supported through academic accommodations
as per Carleton’s Sexual Violence Policy. For more information about the services
available at the university and to obtain information about sexual violence and/or support,
visit: https://carleton.ca/equity/sexual-assault-support-services
Accommodation for Student Activities: Carleton University recognizes the
substantial benefits, both to the individual student and for the university, that result from
a student participating in activities beyond the classroom experience. Reasonable
accommodation will be provided to students who compete or perform at the national or
international level. Contact us with 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: https://carleton.ca/senate/wp-content/uploads/Accommodation-for-Student-
Activities-1.pdf