Note: Some parts of the CMF are outdated due to the COVID-19 situation. Check the Newsletter, D2L and Twitter announcments for the more current information.
Digital Computation
and Programming
Twitter Feed
Contact Emails
C Example Programs
Lab Manual
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.
CPS125 : Digital Computation and Programming
Course Outline and Course Management Form (Winter 2020)
Dr. Maryam Davoudpour
Office: ENG241
Dr. Cherie Ding
Office: ENG258
Dr. Denis Hamelin
Office: ENG243
Dr. Vivian Hu
Office: ENG287a
Dr. Sadaf Mustafiz
Office: ENG285
Dr. Joshua Panar
Office: ENG259
Dr. Isaac Woungang
Office: ENG264

Calendar Description:
Digital Computation and Programming. The C programming language is used to develop good programming techniques. Topics covered include: C program form, language statements, pseudo-code algorithmic representation, numeric data types, flow of control with selection and repetition, standard C libraries, functions and call modes, arrays, pointers, sorting, matrix operations, character and string data types, dynamic storage, structures and linked lists, file I/O. Only regular first year students from the Faculty of Engineering and Applied Science may preregister for this course.

Course Organization:
3 weekly lecture hours and 2 weekly lab hours.

Course Websites:
Visit the official course website (, the official Twitter feed (@CPS125Ryerson), and your professor's website (or D2L/Brightspace™ shell) for specific section information (details provided during the first class). The example programs website can be found on

Course Texts:
*Hamelin, D. (2011), Digital Computation and Programming Workbook, Dubuque: Kendall-Hunt - ISBN: 978-07575-9687-2. (highly recommended)

*Hanly, J. R. & Koffman, E. B. (2012), Problem Solving and Program Design in C - Seventh Edition, Boston: Pearson Publishing.
*Hanly, J. R. & Koffman, E. B. (2011), Problem Solving and Program Design in C - Fourth Custom Edition for Ryerson University, Boston: Pearson Custom Publishing.

Optional lab references:
Academic Computing Services (2004), User's Guide to Academic Computing and the Internet, Toronto: Ryerson University Bookstore. Also available on line.
If your lab uses the facilities of the Department of Computer Science (ENG Building), you will need the User Guide to DCS Facilities.

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.

Practical Midterm Test: 20%
Lab Practice & Assessment: 10%*
Participation (iClicker quizzes): 5%
Term Project: 10%
Final Exam: 55%

*Grading Variation:
To pass the course, it is necessary to obtain an 80% grade in at least 2/3 of the labs in addition to an overall 50% grade in the course. Students must submit their lab work from the labs during the lab period. The 80% grade is for the production of an artifact (usually a program or report) that can be easily constructed/written during a single lab period. The remaining 20% are for added features or qualities of the artifact. This 80-20 breakdown was chosen to acknowledge basic engagement in the lab activity with a valuable passing grade while still leaving room to reward additional effort. The 2/3 requirement coupled with the requirement that lab work must be physically submitted from the labs is designed to guarantee substantial personal engagement in the process while providing students some flexibility in their scheduling. Under exceptional circumstances (which includes academic accommodations) and with the permission of the instructor/professor, students can also make up a missed lab by attending a different section.

► Cheating and plagiarism are serious offences. In accordance with the revised Policy 60 on academic integrity, an extra 5% penalty on the final grade will be applied if submitted projects are found not to be original work (in addition to the 0/10 mark which will be assigned for a non-original assignment). Project markers may also check the originality of the submissions using a plagiarism detection system.
► It is strictly forbidden to make recordings or take pictures during the lectures. It is also forbidden to redistribute the slides, the labs, the projects and other material found on the official course website, the professors' websites and D2L. Individuals found doing so will be charged with academic misconduct and could be prosecuted for copyright violations under the Copyright Act of Canada.
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 Student Health Certificate AND an Academic Consideration form within 3 working days of the missed date. Both documents are available at Students in all other Ryerson programs, and students taking courses in the G. Raymond Chang School of Continuing Education, must submit their request for academic consideration on health grounds by completing the Academic Consideration Document Submission Form (, along with a completed Student Health Certificate (or letter from an appropriate regulated health professional),

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. Both documents are available at 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 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!

Schedule of activities:
(the material may not necessarily be covered in the exact order given)

Week #
Contents / Topics Course Slides Textbook Readings Example Programs to Review Labs, tests and projects
(Jan 6-10)
Course introduction. Algorithms. Computer systems. Internal representations. Programming languages. Problem solving. Program development. Lesson #1 Chapter 1 - NO LAB
(Jan 13-17)
Introduction to C: Preprocessor directives. Comments. Structures of C instructions. Program skeletons. Variables. Identifiers. Rules for identifiers. Placeholders (formatting strings). printf and scanf statements. Reading/writing data from/to files (fscanf and frprintf). Reading/writing data from/to files (redirection using scanf and printf). Assignment operator (=). Lesson #2 Chapter 2
(2.1, 2.2, 2.3 2.4, 2.6)
Section 01 (all programs) NO LAB
(Jan 20-24)
Variables, Operators, and Expressions: Types of variables. Inaccuracies. Basic data types (int, double, char). Operators (+,-,*,/,%). Memory and pointers. Integer expressions (division). Double expressions. Mixed expressions. Explicit conversion (casting). Unary operator (-). Evaluating expressions (rules). Building expressions. Math functions (math.h). Other functions (abs, rand / stdlib.h). Increment(++) and decrement(--). Lesson #3 Chapter 2
(2.5, 2.7, 2.8)

Chapter 3
(3.1, 3.2)

Chapter 7
(7.1, 7.2)
Section 02 (all programs) LAB #1
(Jan 27-31)
Logical Operators and Selection Statements: Comparison operators (<, <=, >, >=, ==, !=). Logical operators (&&, ||, !). Evaluating logical expressions. Building logical expressions. Comparing characters. if statements (one alternative, two alternatives, with compound statements, nested). switch statement. Lesson #4 Chapter 4 Section 03 (all programs) LAB #2
(Feb 3-7)
Repetition and Loops I: Theoretical kinds of loops (counting loops, sentinel loops, EOF loops, input validation loops, general loops). Loops in C (while statement, for statement). Lesson #5 Chapter 5 (5.1 to 5.3) Section 04 (1 to 5) LAB #3
(Feb 10-14)
Repetition and Loops II: C statements implementing advanced loops. Nested loops. Practical applications.Repetition and Loops II: Loops in C (EOF-controoled loops, do-while statement, input validation loops. Nested loops. Lesson #5 Chapter 5 (5.4 to 5.11) Section 04 (6 to 10)
LAB #4
(Feb 17-21)
Family Day / Reading Week - No classes, no labs.
(Feb 24-28)
Modular Programming and Functions I: Concepts. Defining functions. Calling functions. Scope of names. Function with value arguments (no arguments/no result, 1 argument/no result, 2 or more arguments/no result, no arguments/1 result, 1 argument/1 result, 2 or more arguments/1 result). Number-Order-Types of arguments/parameters pairs. Lesson #6 Chapter 3 (3.3 to 3.6) Section 05 (all programs) LAB #5
(Mar 2-6)
Modular Programming and Functions II: Using pointer parameters to simulate multiple results from a function. Recursion. Lesson #6 Chapter 6 Section 06 (all programs) PRACTICAL MIDTERM TEST
(Mar 9-13)
Arrays I: Numerical arrays of one dimension. Passing such arrays to functions (pointers and arrays). Dynamic allocation of 1D numerical arrays. Lesson #7 Chapter 8 (8.1 to 8.6) Section 07 (all programs) LAB #6
(Mar 16-20)
Arrays II: Multidimensional arrays. Passing such arrays to functions (pointers and arrays). Dynamic allocation of 2D arrays. Basic strings. Case studies. Lesson #7 Chapter 8 (8.7 to 8.9)
Chapter 9
Section 08 (all programs)
Section 09 (all programs)
LAB #7
(Mar 23-27)
Structures: The typedef construct. Operations on structures. Structures and functions. Pointers on structures (arrow operator). Lesson #8 Chapter 11 (11.1 to 11.5) Section 10 (1 and 2)
LAB #8
Last day to drop course
(Mar 30 - Apr 3)
Linked Lists. Command line arguments. Lesson #8 Chapter 12 Section 12 (all programs)
LAB #9
Term project due
(Apr 6-9)
Course review. Review exercises. - - - NO LAB

Evaluation Guidelines and General Information:
▷ The midterm test is a 100-minute, closed-book practical test that covers all the lecture and laboratory materials up to that point in time (details will be provided via D2L and the Twitter feed). It consists of specific tasks to be accomplished writing C programs during a prescribed amount of time. Submission of the test is done electronically using a secure proprietary system and is marked on the correctness of expected results. The term tests take place in the lab room during the scheduled lab time.

▷ The final examination is a 2-hour, closed-book written examination that covers all the course and laboratory materials of the entire semester. Half the exam consists of multiple choice questions, the other half written problems (programming/coding questions on paper).

▷ The term project consist of an elaborate C programming endeavour that will require working knowledge of the concepts covered up to that point. The points awarded are only part of the importance of the project as one programming question on the final exam will build on the expertise acquired during the project. The term project might include some aspects that will be covered by discovery learning (like the plotting capabilities). This is a team-only project and individual submission cannot and will not be accepted.

▷ The lab grade depends upon attendance and your complete devoted attention to the activities specified in the lab manual: that is, no surfing, texting, emailing, tweeting, etc. The lab manual will detail the activities to perform.

▷ Attendance at classes will be rewarded with participation points on quiz activities. Details will be provided in class by the profesor.

▷ Tests and exams have specific rules and you must abide by them, that may include limited washroom access. It is forbidden to have at your desk or wear on your person any electronic devices (including watches) during the tests and exam.

▷ It is very important to know your CPS125 section number. Marks will be lost on any evaluation missing proper identification, i.e. Family/Last Name, Given/First Name, Section Number and Student Identification Number (only if specifically requested).

▷ Students are responsible for logging on to the course website and Twitter feed regularly (no registration required to read the Twitter feed), and for following all course related instructions so transmitted. Students should also check their email (the email as per academic policy) daily for any notices from the professors and are responsible for following any directives so sent.

▷ As course topics typically develop based on material from previous lectures, students are strongly urged to attend ALL classes. If you miss any material due to illness or other unavoidable circumstance be sure to catch up before the next class. Many studies have demonstrated that class attendance is the best predictor of success in any class.

▷ Test marks and lab attendance credits will be available on the Brightspace/D2L system or other means specified by your Professor. As per Ryerson regulation, final grades will be disclosed only by the registrar's office.

▷ A faculty course survey will be filled by the students approximately on week 11.

Rules and regulations:
The rules and regulations are for the enjoyment and respect of everyone in the class including yourself. Thank you very much for abiding by them:

▷ Please refrain of talking during the lecture. Everybody needs to hear correctly. If you feel the urge to talk, you are invited to step out of the classroom.

▷ Please shut down you cell phone or put it in vibrating mode during the lecture. If you are expecting an important call, and do not have a vibrating function, please answer it immediately and step out of the classroom to talk.

▷ Please arrive on time, class will promptly begin at :10. If you arrive late or have to leave early, please do so quietly and be nice and close the door behind you if it doesn't close automatically.

▷ Please be reminded that the Graduate Assistants (GAs) are the representatives of the professor in the lab sessions. You are to treat the GAs with respect.

▷ Emails to your professor should always begin with a greeting (Dear Dr. X, Dear Professor Y) and be written in proper English (no chat room lingo please). Your should also always indicate your name (family, given in that order), course (CPS125) and section number in all communications. You must always use your email to communicate with your professor. Messages sent from other addresses (gmail, hotmail, ...) or missing proper identification as noted just above likely will not be read. Do not use your Student Identification Number unless specifically requested. Messages to the lab assistants and project markers must be CCd to the section Professor.

▷ As some students may be allergic or hyper sensitive to fragrances, please refrain from wearing perfume or cologne in class or lab.

Academic Policies:
a. Ryerson Policies of Interest
Ryerson Senate Policies -
Ryerson Academic Integrity -
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 (, 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: 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 we 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

Modifications to the course procedures will be made in consultation with the students and will be announced on the course website.

Copyright 2021 Ryerson University. Toronto, Ontario, Canada. All Rights Reserved.