0% found this document useful (0 votes)
28 views12 pages

SYSC2006 CourseOutlineWinter25

SYSC 2006 is a course on the foundations of imperative programming, focusing on concepts such as memory management, data structures, and recursion using the C programming language. Prerequisites include second-year engineering status and familiarity with procedural programming in Python. The course includes lectures, labs, and assessments, with a grading scheme based on lab work, assignments, and exams, requiring students to pass the final exam to pass the course.

Uploaded by

Ramesh Babu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views12 pages

SYSC2006 CourseOutlineWinter25

SYSC 2006 is a course on the foundations of imperative programming, focusing on concepts such as memory management, data structures, and recursion using the C programming language. Prerequisites include second-year engineering status and familiarity with procedural programming in Python. The course includes lectures, labs, and assessments, with a grading scheme based on lab work, assignments, and exams, requiring students to pass the final exam to pass the course.

Uploaded by

Ramesh Babu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

SYSC 2006

Foundations of Imperative Programming


Winter 2025

Instructor: Chung-Horng Lung, ME4434


[email protected]

TA name(s): check Brightspace

Course Description and Requirements

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.

Includes: Experiential Learning Activity


Lectures three hours a week, laboratory two hours a week.
http://calendar.carleton.ca/undergrad/courses/SYSC/

2) Prerequisites

Second-year status in Engineering.


Precludes additional credit for COMP 2401, SYSC 4006.

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.

5) Accreditation Units (AUs)


For more information about Accreditation Units, please visit:

https://engineerscanada.ca/.

The course has 49 AUs divided into:

Math Natural Complementary Engineering Engineering


Science Studies Science Design
35% 65%

6) Learning Outcomes/ Graduate Attributes (GAs)

By the end of this course, students should be able to:


1. Produce well-tested, readable, and maintainable C code that demonstrates their
understanding of control flow, memory management, and code and data structuring
constructs provided by an imperative programming language.
2. Trace short programs written in C; explain what happens, step-by-step, as the
computer executes each statement; and visualize how code execution changes the
program's state; in other words, draw diagrams that depict the program's global
variables, its activation frames (containing function arguments and local variables) and
memory that has been allocated from the heap and is accessed through pointers.
3. Design, code, test, and debug functions that operate on two fundamental data
structures: the dynamic (resizable) array and the pointer-based singly-linked list.
4. Describe, from a client-side perspective, the operations provided by some abstract
data types (ADTs): e.g., lists, queues, and stacks.
5. Given the specification of an ADT and a description of its underlying data structure,
implement the data structure and the functions that provide the required operations.
6. Specify simple recursive algorithms, convert these algorithms into recursive
functions, and draw memory diagrams to explain their execution.

The Canadian Engineering Accreditation Board requires graduates of engineering


programs to possess 12 attributes at the time of graduation. Activities related to the
learning outcomes listed above are measured throughout the course and are part of the
department’s continual improvement process. Graduate attribute measurements will not
be taken into consideration in determining a student’s grade in the course. For more
information, please visit: https://engineerscanada.ca/.
Graduate Attribute Learning
outcome(s)
1.4.S: Knowledge Base: Introduced: Programming and algorithms 2, 4, 5
5.1: Use of Engineering Tools: Introduced: Diagrams and engineering 1, 5
sketches
5.3: Use of Engineering Tools: Introduced: Tools for design, 1, 5
experimentation, simulation, visualization, and analysis
7.1: Communication Skills: Introduced: Instructions 1, 3, 5

7) Textbook (or other resources)

Students may choose between two books:

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

C Tutor (visit pythontutor.com).

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 (visit https://code.visualstudio.com/docs/languages/cpp)

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?

Labs (best 10 out of 12) 10%


Commented [CR4R1]: I agree with 3% (maybe 1% for A01,
Bonus: Lab 13 1% which is easier, and 2% for A02). I know it was a lot, but
based on my previous experience in the winter… probably, I
Assignments (2) 10%
should not compare the winter term with the fall term.
Bonus: Assignment Enhancements (2) 3%
If a student didn’t submit anything, then, for the bonus they
Bonus: Lecture Participation 3% will need to solve the whole assignment (in that case, fixing
Midterm Exam 20% the errors highlighted by the TAs would mean doing the
assignment)
Final Exam 60%

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:

1. Labs (including Lab 13): 8/11


2. Assignments (including Enhancements): 4/13
3. Midterm: 8/20 Commented [CR5]: @Lynn Marshall , what do you think
about this? Feel free to modify. Same with the text
For the above calculation, if a student defers the midterm, the grade in the midterm will Commented [LM6R5]: We should fix this page break if
be considered 0/20. Thus, the final grade for students deferring both the midterm and the other things don’t change. (For now I’ve added an extra
final exam will be an F, regardless of their grade on the deferred exam. blank line, so that the list isn’t split.)

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.

Lectures & Lecture Participation (3% Bonus)


Commented [LM10]: Do you think students will try to join
Lectures will be delivered in person. Lectures will not be streamed or recorded. in from home/elsewhere? Or do you think they will ask a
friend to join in on two devices? (Or both.) And how would
Participation during lectures is worth a 3% (bonus). To complete this course component, we catch it?
students need to be present in the lecture hall. No accommodations will be made for Commented [CR11R10]: I have seen an AI offense about
missed lectures. Students who miss all lectures can still achieve 100% in the course. this in the Committee for AI appeals in the senate. That’s
why I added it. That case was someone that joined from
Note: Participating in the lecture polls while not present in the lecture hall will be home.
considered an academic offense, and will be reported to the Dean’s office. In this case, I put it there more for scaring and in case we catch someone
the grade for the lecture participation component will be zero no matter the than to actually enforce it. For catching it, it can be counting
circumstances. people in class or checking IP address on Brightspace (not
saying that we will do it, but wanted to be on the safe side
incase something happens)
Labs (10%)
Labs consist of short programming exercises that are intended to help you understand Commented [LM12]: This (and the paragraph below)
concepts that have been introduced in the lectures. The best 10 out of 12 labs will count don’t line up with the above

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.

Lab 13 (1% Bonus)


Lab 13 is an extra lab reviewing the last lectures of the course. Despite being a bonus lab Commented [LM14]: Indentation changed again!
in terms of grading, the material covered is part of the course, and it will be covered in the
final exam. Extensions will not be granted. Commented [CR15R14]: It should now be fixed. Can you
check again?
Assignments (10%)
Assignments consist of longer programming exercises that are intended to build on the
concepts introduced in the lectures. You may work on the assignments at your
convenience. You must submit your assignments in Brightspace before the given
deadline for your work to be marked.

Assignment Enhancements (3% Bonus)


Extra questions and the opportunity to correct your mistakes on previous assignments Commented [LM16]: I think this one is still off
will be given. These activities will be worth up to 3% bonus. The original assignment mark (indentation)

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.

Missed Term Work


Students who claim short-term extenuating circumstances (normally lasting up to five
days) as a reason for missed term work are held responsible for immediately informing
the instructor (with a completed self-declaration form) and for making alternate
arrangements with the instructor. In all cases, this must occur no later than three (3) days
after the term work is due. The alternate arrangement must be made before the last day
of classes in the term as published in the academic schedule. Consult the Section 4.4 of
the University Calendar:
https://calendar.carleton.ca/undergrad/regulations/academicregulationsoftheuniversity/e
xaminations/#deferred-term-work

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.

Missed Final Exam


Students who are unable to write the final examination because of a serious
illness/emergency or other circumstances beyond their control may apply for
accommodation by contacting the Registrar’s office. Consult the Section 4.3 of the
University Calendar:
https://calendar.carleton.ca/undergrad/regulations/academicregulationsoftheuniversity/e
xaminations/

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).

Advising and Counselling Services


a) Engineering Academic Advising
The Engineering Academic Support Service: https://carleton.ca/engineering-
design/current-students/undergrad-academic-support/ assists undergraduate engineering
students with course selection, registration, and learning support from first-year through
to graduation.
Academic Advisors Contact: https://carleton.ca/engineering-design/current-
students/undergrad-academic-support/undergraduate-advisors/
b) Student Mental Health Service
As a University student, you may experience a range of mental health challenges that
significantly impact your academic success and overall well-being. Carleton's Wellness
Services Navigator https://wellness.carleton.ca/navigator/ is designed to help students
connect with mental health and wellness resources. If you need to talk to someone,
please reach out for assistance: https://carleton.ca/health/emergencies-and-crisis/

Learning and Working Environment


The University and all members of the University community share responsibility for
ensuring that the University’s educational, work and living environments are free from
discrimination and harassment. Should you have concerns about harassment or
discrimination relating to your age, ancestry, citizenship, colour, creed (religion), disability,
ethnic origin, family status, gender expression, gender identity, marital status, place of
origin, race, sex (including pregnancy), or sexual orientation, please contact the
Department of Equity and Inclusive Communities at [email protected]
We will strive to create an environment of mutual respect for all through equity, diversity,
and inclusion within this course. The space which we work in will be safe for everyone.
Please be considerate of everyone’s personal beliefs, choices, and opinions.

Academic Integrity and Plagiarism


a) Please consult the Faculty of Engineering and Design information page about the
Academic Integrity policy and our procedures: https://carleton.ca/engineering-
design/current-students/fed-academic-integrity. Violations of the Academic Integrity Policy
will result in the assignment of a penalty such as reduced grades, the assignment of an
F in a course, a suspension or, expulsion.
b) One of the main objectives of the Academic Integrity Policy is to ensure that the work
you submit is your own. As a result, it is important to write your own solutions when
studying and preparing with other students and to avoid plagiarism in your submissions.
The University Academic Integrity Policy defines plagiarism as “presenting, whether
intentionally or not, the ideas, expression of ideas or work of others as one’s own.” This
includes reproducing or paraphrasing portions of someone else’s published or
unpublished material, regardless of the source, and presenting these as one’s own
without proper citation or reference to the original source.
Examples of violations of the policy include, but are not limited to:
• Any submission prepared in whole or in part, by someone else;
• Using another’s data or research findings without appropriate acknowledgment;
• Submitting a computer program developed in whole or in part by someone else,
with or without modifications, as one’s own;
• Failing to acknowledge sources of information through the use of proper citations
when using another’s work and/or failing to use quotations marks; and
• Unless explicitly permitted by the instructor in a specific course, the use of
generative AI and similar tools to produce assessed content (such as text, code,
equations, images, summaries, videos, etc.).

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

You might also like