Computer Programming I
Curriculum guideline
Lecture: 2 hours/week
Lab: 2 hours/week
Lectures, labs, and self-directed learning (programming assignments)
- Introduction to computing systems and programming
- Hardware and software
- Programming languages, compilers, and interpreters
- Introduction to pseudocode and flowcharts
- Programming errors and code debugging
- Integrated Development Environments
- Programming fundamentals
- Basic data encoding and numeral systems including binary, octal, and hexadecimal systems
- Primitive data types
- Variables, literals, constants, and identifier naming conventions
- Assignment operator
- Console I/O and output formatting
- Expressions and arithmetic operators
- Static 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
- Recursive functions
- Standard library functions including mathematical functions and random number generators
- Arrays, C-strings, and string objects
- Array basics
- Arrays and static memory allocation
- Passing and returning arrays to/from functions
- Multi-dimensional arrays
- Arrays of characters and C-strings
- String objects and character manipulation library functions
- Introduction to algorithm efficiency analysis and basic sorting and searching algorithms
- Bubble sort
- Selection sort
- Linear search
- Binary search
- Structured data
- Using structures to create records of data
- Arrays of structures
- Passing and returning structures to/from functions
- 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
- File input and output
- Basic file operations: reading from, writing and appending to text files
- Sequential file processing using loops
- Exceptions
- Throwing an exception
- Exception propagation
- Rethrowing exceptions
- Catching and handling exceptions
Upon successful completion of the course, students will be able to:
- Identify the major components of a computer system, different types of programming languages, and related terminology;
- Employ numeral systems and data representation in memory;
- Design algorithms for small problems and describe the program development process;
- Develop programs involving fundamental programming constructs: literals, variables, expressions, constants, operators, console I/O, and text file I/O;
- Apply flow-control structures to write programs including decision making and loops;
- Analyze, test, and debug programs for syntax, logic, and run-time errors;
- Utilize consistent documentation and coding style standards to create readable and maintainable programs;
- Apply procedural programming to break down a program into functions;
- Compare different methods of passing parameters to a function;
- Utilize advanced data structures such as arrays, structs, string objects, and C-strings;
- Outline basic sorting and searching algorithms and compare their efficiency;
- Implement and trace recursive functions and compare them with iterative implementations;
- Compare dynamic and static memory allocation techniques and utilize them to write efficient programs;
- Explain the concept of pointers and use them to manage dynamic data structures in a program;
- Identify runtime errors to throw and handle exceptions appropriately.
Assessment will be in accordance with the Douglas College Evaluation 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% |
Term Test(s) | 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, term tests and final examination.)
Consult the Douglas College Bookstore for the latest required textbooks and materials.
Example textbooks and materials may include:
- Starting Out with C++ from Control Structures to Objects (current edition), Tony Gaddis, Pearson
- Introduction to C++ Programming and Data Structures (current edition), Daniel Liang, Pearson
Minimum C grade in Pre-Calculus 11 or Foundations of Math 11, or minimum C- grade in MATU 0411