Course

Computer Programming I

Faculty
Science & Technology
Department
Computing Science
Course Code
CMPT 1109
Credits
3.00
Semester Length
15 Weeks
Max Class Size
35
Method(s) Of Instruction
Lecture
Lab
Typically Offered
To be determined

Overview

Course Description
This course provides an introduction to computing science and programming, intended for students with little or no programming background. Students will learn how to analyze problems and design algorithms as well as implement their solutions using a high-level programming language such as C++. Topics include structured programming fundamentals, control structures, procedural programming, recursion, arrays, basic sorting and searching algorithms, strings, pointers, dynamic memory allocation, files, exceptions, and an introduction to object-oriented programming.
Course Content
  • Introduction to computing systems and programming
    • Hardware and software
    • Programming languages, compilers, and interpreters
    • Software development cycle
    • Algorithm design and programming process
    • Programming errors and code debugging
    • Integrated Development Environments
  • Programming fundamentals
    • Basic data encoding and numeral systems
    • Primitive data types
    • Variables, literals, constants, and identifier naming conventions
    • Assignment operator
    • Basic I/O and output formatting
    • Expressions and arithmetic operators
    • Type casting
    • Comments and code documentation
  • Conditional and iterative constructs
    • Decision-making structures
    • Relational and logical operators
    • Repetition structures and loop design strategies 
    • Nested constructs
  • Procedural programming and functions
    • Problem solving and code modularization
    • Defining and calling a function
    • Local, global, and static local variables
    • Reference and constant reference variables
    • Passing parameters by value and by reference
    • Default arguments
    • Inline functions
    • Function overloading
    • Function abstraction
    • Unit and integration testing
    • Mathematical library functions
  • Recursion
    • Problem solving using recursion
    • Recursive vs iterative implementations
  • Arrays and C-Strings
    • Array basics
    • Arrays and static memory allocation
    • Passing and returning arrays to/from functions
    • Range-based for loop
    • Multi-dimensional arrays
    • Arrays of characters and C-Strings
    • C-String and character manipulation library functions
  • Sorting and searching algorithms
    • Basic sorting algorithms
    • Elementary searching algorithms
    • An introduction to the efficiency analysis of algorithms
  • Pointers and dynamic memory management
    • Pointer basics
    • Constant pointers and pointers to constant data
    • Arrays of pointers
    • Pointers as function parameters and return values
    • Dynamic memory allocation
  • An introduction to object-oriented programming
    • Procedural vs. object-oriented programming
    • Classes as abstract data types
    • Class design guidelines
    • Attributes and methods
    • Private vs public class members
    • Class constructors, destructors, and constructing objects
    • Setter and getter member functions
    • Arrays of objects
    • Pointer to objects and the this pointer
    • The string class
    • Structures and enumerated data types
  • File input and output
    • Text files vs. binary files
    • Sequential vs. random-access files
    • Basic file operations
  • Exceptions
    • Throwing an exception
    • Exception classes
    • Exception propagation
    • Rethrowing exceptions
    • Catching and handling exceptions
Learning Activities

Lectures, labs, and self-directed learning (programming assignments)

Means of Assessment

Evaluation will be carried out in accordance with Douglas College policy. The instructor will present a written course outline with specific evaluation criteria at the beginning of the semester. Evaluation will be based on the following.

Labs

10% - 20%
Assignments 10% - 20%
Quizzes 0% - 10%
Midterm Exam 25% - 35%
Final Examination 30% - 40%
Total 100%

** In order to pass the course, in addition to receiving an overall course grade of 50%, students must achieve a grade of at least 50% on the combined weighted examination components (including quizzes, midterm and final examinations.)

Learning Outcomes

Upon the completion of this course, successful students will be able to:

  • Explain the major components of a computer system, different types of programming languages, and related terminology
  • Comprehend numeral systems and data representation in memory
  • Design algorithms for small problems and discuss the program development process
  • Identify code quality factors and use them to create high-quality programs
  • Develop simple programs involving the fundamental programming constructs: variables, expressions, operators, basic I/O, and control structures
  • Analyze, test, and debug programs for syntax, logic, and run-time errors
  • Apply consistent documentation and program style standards to create readable and maintainable software
  • Explain the importance of modularization in programming
  • Comprehend procedural programming to break up a program into functions
  • Use and compare different methods of passing parameters to a function
  • Write programs that use advanced data structures like arrays, structs, strings, enumerated data types
  • Discuss and implement basic sorting and searching algorithms
  • Identify divide-and-conquer algorithms, implement recursive functions, and compare recursive and iterative functions
  • Describe the concept of dynamic memory allocation and compare it with the method of static memory allocation
  • Explain the concept of pointers and use them to manage dynamic data structures in a program
  • Use basic file I/O to write programs that store and retrieve data to/from files
  • Comprehend runtime errors to throw and handle exceptions appropriately
Textbook Materials

Consult the Douglas College Bookstore for the latest required textbooks and materials.

Sample text:

Introduction to C++ Programming and Data Structures (latest edition), Daniel Liang, Pearson, ISBN: 978-0-13-466985-4

Requisites

Prerequisites

Minimum C grade in Pre-Calculus 11 or Foundations of Math 11, or minimum C- grade in MATU 0411

Corequisites

Not Specified

Equivalencies

Note: Students who have received credit for CMPT 1110 will not receive further credit by taking CMPT 1109.

Course Guidelines

Course Guidelines for previous years are viewable by selecting the version desired. If you took this course and do not see a listing for the starting semester / year of the course, consider the previous version as the applicable version.

Course Transfers

These are for current course guidelines only. For a full list of archived courses please see https://www.bctransferguide.ca

Institution Transfer Details for CMPT 1109
Alexander College (ALEX) ALEX CPSC 1XX (3)
Coast Mountain College (CMTN) CMTN CPSC 123 (3)
College of New Caledonia (CNC) CNC CSC 109 (3)
College of the Rockies (COTR) COTR COMP 105 (3)
Coquitlam College (COQU) COQU CSCI 120 (3)
Fraser International College (FIC) FIC CMPT 120 (3) or FIC CMPT 130 (3)
Kwantlen Polytechnic University (KPU) KPU INFO 1112 (3)
LaSalle College Vancouver (LCV) DOUG CMPT 1109 (3) & DOUG CMPT 1209 (3) = LCV VGP 101 (6)
North Island College (NIC) NIC CPS 100 (3)
Okanagan College (OC) OC COSC 111 (3)
Quest University (QU) QU IND 3156 (4)
Simon Fraser University (SFU) SFU CMPT 120 (3) or SFU CMPT 128 (3) or SFU CMPT 130 (3)
University of British Columbia - Okanagan (UBCO) UBCO COSC 111 (3)
University of British Columbia - Vancouver (UBCV) UBCV CPSC 1st (3)
University of Northern BC (UNBC) UNBC CPSC 1XX (4)
University of the Fraser Valley (UFV) UFV COMP 150 (3)
University of Victoria (UVIC) UVIC CSC 110 (1.5)
Vancouver Community College (VCC) VCC CMPT 1010 (3)
Vancouver Island University (VIU) VIU CSCI 160 (4)

Course Offerings

Fall 2023

CRN
Days
Dates
Start Date
End Date
Instructor
Status
CRN
36535
Tue Thu
Start Date
-
End Date
Start Date
End Date
Instructor Last Name
Janzen
Instructor First Name
Izabelle
Course Status
Waitlist
Max
Enrolled
Remaining
Waitlist
Max Seats Count
35
Actual Seats Count
36
-1
Actual Wait Count
13
Days
Building
Room
Time
Tue Thu
Building
New Westminster - South Bldg.
Room
S0620
Start Time
10:30
-
End Time
12:20
CRN
Days
Dates
Start Date
End Date
Instructor
Status
CRN
36536
Wed Fri
Start Date
-
End Date
Start Date
End Date
Instructor Last Name
Khosravi
Instructor First Name
Shahriar
Course Status
Waitlist
Max
Enrolled
Remaining
Waitlist
Max Seats Count
35
Actual Seats Count
37
-2
Actual Wait Count
10
Days
Building
Room
Time
Wed Fri
Building
New Westminster - South Bldg.
Room
S0620
Start Time
10:30
-
End Time
12:20
CRN
Days
Dates
Start Date
End Date
Instructor
Status
CRN
36884
Mon Wed
Start Date
-
End Date
Start Date
End Date
Instructor Last Name
Ariafar
Instructor First Name
Arezoo
Course Status
Waitlist
Max
Enrolled
Remaining
Waitlist
Max Seats Count
35
Actual Seats Count
36
-1
Actual Wait Count
5
Days
Building
Room
Time
Mon Wed
Building
New Westminster - South Bldg.
Room
S0620
Start Time
12:30
-
End Time
14:20
CRN
Days
Dates
Start Date
End Date
Instructor
Status
CRN
37118
Mon Wed
Start Date
-
End Date
Start Date
End Date
Instructor Last Name
Janzen
Instructor First Name
Izabelle
Course Status
Waitlist
Max
Enrolled
Remaining
Waitlist
Max Seats Count
35
Actual Seats Count
36
-1
Actual Wait Count
4
Days
Building
Room
Time
Mon Wed
Building
New Westminster - North Bldg.
Room
N6111
Start Time
14:30
-
End Time
16:20
CRN
Days
Dates
Start Date
End Date
Instructor
Status
CRN
37464
Tue Thu
Start Date
-
End Date
Start Date
End Date
Instructor Last Name
Janzen
Instructor First Name
Izabelle
Course Status
Waitlist
Max
Enrolled
Remaining
Waitlist
Max Seats Count
35
Actual Seats Count
36
-1
Actual Wait Count
8
Days
Building
Room
Time
Tue Thu
Building
New Westminster - South Bldg.
Room
S0620
Start Time
14:30
-
End Time
16:20