Computer Programming Fundamentals
Ryerson University
Department of Computer Science
Land Acknowledgement
Toronto is in the 'Dish With One Spoon Territory'. The Dish With One Spoon is a treaty between the Anishinaabe, Mississaugas and Haudenosaunee that bound them to share the territory and protect the land. Subsequent Indigenous Nations and peoples, Europeans and all newcomers have been invited into this treaty in the spirit of peace, friendship and respect.
CPS188 - Computer Programming Fundamentals
Course Outline and Course Management Form [Winter 2022]
Dr. Maryam Davoudpour
Sections 16 to 18
Dr. Denis Hamelin
Sections 01 to 15
Lab Assistants and Markers
Chang Chuy
Sections 04, 08, 09, 13
Sean Davies-Lee
Sections 05, 11, 12
Arman Hamzehlou Kahrizi
Sections 15 to 18
Zahra Mohtajollah
Sections 01, 02, 10
Dipak Pudasaini
Sections 03, 06, 07, 14
Calendar Description:
This course introduces concepts, theory and practice of computer programming, using the C programming language. It serves as a foundational course for higher year programming dependent engineering courses. In-depth emphasis is on program form/organization, pseudo-code, data types, conditional expressions, repetition, standard C libraries, casting,functions, arrays, pointers, sorting, recursion, matrix operations, dynamic storage, structures, linked lists, I/O. This is a required course in Biomedical, Computer, Electrical, Industrial, and Mechanical Engineering programs. (Students in other engineering programs can enrol with permission from their respective departments.)
Course Organization:
4 weekly lecture hours and 2 weekly lab hours.
Course Websites:
See the official course website (https://www.cs.ryerson.ca/~cps188), and your Professor's D2L shell (or website) for specific section information (details provided during the first class).
Compulsory Textbook:
Jeri R. Hanly & Elliot B. Koffman (2016). Problem Solving and Program Design in C, 8th Edition. Pearson. ISBN: 978-01342-4394-8
Lab References:
For the Computer Science Department labs: User's Guide to the CS Depratment Labs
For the general Ryerson labs: Academic Computing Labs
Learning Objectives:
At the end of the course, a successful student will be able to:
1. Have an understanding of what are computers, how they work, and how data is represented and processed inside them.
2. Use the basic and advanced functionalities of the C programming language.
3. Create algorithms to solve different engineering related problems.
4. Write programs in the C programming language to solve simple and complex engineering problems.
Course Evaluation:
Lab Practice & Assessment: 25%
Practical Midterm Test: 25%
Term Project: 25%
Final Examination: 25%
Grading Variation:
Cheating and plagiarism are a serious offenses. In accordance with the revised Policy 60 on academic integrity, a 10% penalty against your final course grade will be applied if submitted projects are found not to be original work in addition to the 0 (zero) mark which will be assigned for a non-original assignment.
Missed Evaluations:
Students are required to inform their instructors of any situation which arises during the semester which may have an adverse effect upon their academic performance, and must request any considerations and accommodations according to the relevant policies and well in advance. Failure to do so will jeopardize any academic appeals.

Medical certificates: If a student misses the deadline for submitting an assignment, or the date of an exam or other evaluation component because of illness, he or she must submit a Ryerson Health Certificate AND an Academic Consideration Form within 3 working days of the missed date.

Religious observance: If a student needs accommodation because of religious observance, he or she must submit a Request for Accommodation of Student Religious, Aboriginal and Spiritual Observance AND an Academic Consideration Form within the first 2 weeks of the class or, for a final examination, within 2 weeks of the posting of the examination schedule. If the required absence occurs within the first 2 weeks of classes, or the dates are not known well in advance as they are linked to other conditions, these forms should be submitted with as much lead time as possible in advance of the required absence. If you are a full-time or part-time degree student, then you submit the forms to your own program department or school (FYCSO). If you are a certificate or non-certificate student, then you submit the forms to the staff at the front desk of the Chang School.

Students who need academic accommodation support should register with the Academic Accommodation Support office (formerly called the Access Centre). Before the first graded work is due, registered students should inform their instructors through an Accommodation Form for Professors that they are registered with Academic Accommodation Support and what accommodations are required.
Communication with Students:
Ryerson's Email Policy states that only Ryerson e-mail accounts are to be used for communication with students. All students, including continuing education students, have access to Ryerson email through their my.ryerson.ca site, and this is the official way in which they receive communication. All students are required to register for and maintain this account. Emails sent from other accounts may not be answered!
Course Content (Schedule of Activities):

Jan 10-14
Overview of Computers and Programming
Computer Hardware. Computer Software. Software Development Method. Internal Data Representation. Professional Ethics.
LESSON #1 Chapter 1 NO LAB

Jan 17-21
Overview of C
C Language Elements. Variable Declarations and Data Types. Executable Statements. General Form of a C Program. Arithmetic Expressions. Formatting Numbers in Program Output. Interactive Mode, Batch Mode, and Data Files. Common Programming Errors.
LESSON #2 Chapter 2 NO LAB

Jan 24-28
Top-Down Design with Functions
Library Functions. Functions Without Arguments. Functions with Input Arguments. Advanced Functions. Bitwise Operators.
LESSON #3 Chapter 3 LAB #1

Jan 31-Feb 4
Control Structures I
Control Structures and Conditions. The if Statement. If Statements with Compound Statements. Decision Steps in Algorithms and More Problem Solving. Nested if Statements and Multiple-Alternative Decisions. The switch Statement.
LESSON #4 Chapter 4 LAB #2

Feb 7-11
Control Structures II
Repetition and Loop Statements. The while Statement. The for Statement. Conditional Loops. Loop Design. Nested Loops. The do-while Statement and Flag-Controlled Loops. Iterative Approximations. How to Debug and Test Programs. Advanced Loops.
LESSON #5 Chapter 5 LAB #3

Feb 14-18
Pointers and Modular Programming
Pointers and the Indirection Operator. Functions with Output Parameters. Multiple Calls to a Function with Input/Output Parameters. Scope of Names. Formal Output Parameters as Actual Arguments.
LESSON #6 Chapter 6 LAB #4

Feb 21-25
Study Week
No classes. No labs.
- - -

Feb 28-Mar 4
Numerical Arrays
Declaring and Referencing Arrays. Array Subscripts. Arrays and Loops. Arrays and Functions. Searching and Sorting an Array. Parallel Arrays and Enumerated Types. Multidimensional Arrays. Advanced Arrays.
LESSON #7 Chapter 7 LAB #5

Mar 7-11
Strings and Characters Operations. Concatenation and Whole-Line Input. String Comparison. String-to-Number and Number-to-String Conversions.
LESSON #8 Chapter 8 LAB #6

Mar 14-18
The Nature of Recursion. Tracing a Recursive Function. Recursive Mathematical Functions. Recursive Functions with Array and String Parameters. Problem Solving with Recursion. Case Studies.

Mar 21-25
Structure and Union Types + Binary Files
User-Defined Structure Types. Structure Type Data as Input and Output Parameters. Functions Whose Result Values Are Structured. Problem Solving with Structure Types. Parallel Arrays and Arrays of Structures. Union Types. Binary Files.
LESSON #10 Chapters 10, 11 LAB #7

Mar 28-Apr 1
Programming in the Large
Using Abstraction to Manage Complexity. Personal Libraries: Header Files and Implementation Files. Storage Classes. Modifying Functions for Inclusion in a Library. Conditional Compilation. Command-Line Arguments. Defining Macros with Parameters.

Apr 4-8
Advanced Data Structures
Dynamic Memory Allocation. Linked Lists. Stacks and Queues. Ordered Lists. Binary Trees.
LESSON #12 Chapter 13 LAB #8
Academic Policies:
a. Ryerson Policies of Interest
Ryerson Senate Policies - https://www.ryerson.ca/senate/policies/
Ryerson Academic Integrity - https://www.ryerson.ca/academicintegrity/
Policy 46 - Undergraduate Grading, Promotion and Academic Standing
Policy 60 - Student Code of Academic Conduct
Policy 61 - Student Code of Non-academic Conduct
Policy 134 - Undergraduate Academic Consideration and Appeals
Policy 135 - Examination Policy
Policy 150 - Accommodation of Student Religious Observance Obligations
Policy 157 - Student Email Accounts for Official University Communication

b. Obligations: Students need to inform faculty of any situation arising during the semester which may have an adverse effect upon their academic performance; they must request any necessary considerations (e.g. medical or compassionate), or accommodations [e.g. religious observance, disability (should be registered with the Access Center), etc.] according to policies and well in advance. Failure to do so will jeopardize any academic appeals.

c. Re-grading and Re-calculation: Must be requested within 10 working days of the return of the graded assignment to the class.
Academic Conduct:
In order to create an environment conducive to learning and respectful of others' rights, phones and pagers must be silenced during lectures, lab sessions and evaluations. Students should refrain from disrupting the lectures by arriving late and/or leaving the classroom before the lecture is finished.
Academic Misconduct:
According to the Ryerson policy 60 (see link above), academic misconduct includes, but not limited to: Plagiarism which is the claiming of words, ideas, artistry, drawings or data of another person. This also includes submitting your own work in whole or in part for credit in two or more courses.
Misrepresentation of personal identity or performance
Submission of false information
Contributing to academic misconduct
Damaging, tampering, or interfering with the scholarly environment
Unauthorized copying or use of copyrighted materials
Violations of departmental policies or professional behavior
Violations of specific departmental or course requirements
Committing academic misconduct will trigger academic penalties, including failing grades, suspension and possibly expulsion from the University. As a Ryerson student, you are responsible for familiarizing yourself with Ryerson conduct policies.
Automatic Plagiarism Detection:
Project markers may check the originality of the submissions using a plagiarism detection service. Students who do not want their work submitted to the plagiarism detection service must, by the end of the second week of class, consult with the instructor to make alternate arrangements.
Non-Academic Conduct:
Ryerson's Student Code of Non-academic Conduct is described in Senate Policy 61 (see link above). Among many other infractions, the code specifically refers to the following as a violation: "Disruption of Learning and Teaching - Students shall not behave in disruptive ways that obstruct the learning and teaching environment".
Diversity and Inclusion Statement:
In this course I would like to create a learning environment that supports a diversity of thoughts, perspectives and experiences, and honors your identities (including race, gender, class, sexuality, religion, ability, etc.). For more information about our University's resources and services on Equity, Diversity, and Inclusion please visit ryerson.ca/equity/
Copyright 2022 Ryerson University. Toronto, Ontario, Canada. All Rights Reserved.