CC211 / CSC-111 Object Oriented Programming with Lab
Nazar Khan

Programming is the design and development of solutions to computational problems. CC211 builds on Programming Fundamentals and develops the ability to design, implement, debug and reason about software using objects, responsibilities, relationships and reusable components.

Credit hours: 4 (3,1)
Prerequisite: CC112 / CSC-110 Programming Fundamentals
Follow-up: CC213 / CSC-210 Data Structures
Language: C++17
Compiler: GCC 9.4
Debugger: GDB

Learning outcomes

Lectures: Tuesday and Thursday, 12:15 p.m. - 1:45 p.m. in New Seminar Hall, FCIT Old Campus
Office Hours: Monday, 2:30 p.m. - 3:30 p.m.
Google Classroom: https://classroom.google.com/c/

Assessment:

Quizzes

Short checks of tracing, design and explanation

Assignments

Progressive implementation and design tasks

Examinations and project

Reasoning, implementation, debugging and integration

Primary textbook

  1. Paul Deitel and Harvey Deitel, C++ How to Program, 10th Edition, Pearson.

CC211 16-week course map

WeekTopicsReading map
1Orientation, C++ environment and OOP motivation
Compile/run/test workflow; C++ and C; targeted prerequisite bridge.
Deitel 10/e, selected Chapter 1; targeted Chapter 8 pointer/array review.
2Classes, objects and encapsulationChapter 3 selected sections.
3Constructors, destructors and object lifetimeChapter 3.4; selected Chapters 9 and 10.
4Copying, const and static membersSelected Chapters 9-10.
5Composition, aggregation and arrays of objectsSelected Chapters 3, 7 and 9.
6Operator overloading IChapter 10 selected sections.
7Operator overloading IIChapter 10 selected sections.
8Friends, streams and conversionsSelected Chapters 9-10.
9InheritanceChapter 11.
10Virtual functions and dynamic bindingChapter 12 selected sections.
11Abstract classes and advanced polymorphismSelected Chapter 12; course-authored examples.
12Multiple inheritance, relationships and UMLSelected Chapters 9 and 11; UML material as appropriate.
13Streams and file handlingSelected Chapters 13-14.
14Function and class templatesSelected Chapter 18; course-authored specialization material.
15Partial specialization and STLSelected Chapter 15.
16Exceptions and course integrationSelected Chapter 17.

Assessment note: Quizzes, progressive assignments, examinations and a small-scale application project are planned. Exact marks and percentages follow the instructor's finalized assessment policy.

Legacy PF schedule

#

Topics

Readings

Miscellaneous

1

Introduction to Computers

  • Introduction
  • Hardware and Software
    • Moore's Law
    • Computer Organization
  • Data Hierarchy
  • Machine Languages, Assembly Languages and High-Level Languages

DD 1.1 -- 1.4

2

The C Programming Language

  • The C Programming Language
  • C Standard Library
  • C++ and Other C-Based Languages
  • Typical C Program-Development Environment

DD 1.5 -- 1.10

3

Introduction to C Programming - I

  • Typical Structure of C Program
  • Example 1: Printing a line of text
  • Example 2: Adding two integers

DD 2.1 -- 2.4

4

Introduction to C Programming - II

  • Arithmetic Operators
  • Operator Precedence
  • Relational Operators

DD 2.5 -- 2.6

Assignment 1

5-8

Structured Program Development in C

  • Algorithms and pseudocode
  • Control structures
    1. Sequence
    2. Selection
    3. Repetition
  • Arithmetic assignment operators
  • Increment/decrement operators

DD 3.1 -- 3.12

Assignment 2

9-13

Program Control in C

  • The for loop
  • The switch statement
  • The do ... while loop
  • The break and continue statements
  • Logical operators
  • Assignment vs. Equality

DD 4.4 -- 4.11

Assignment 3

14-16

Functions in C

  • Modularization
  • Function Prototypes
  • Function Call Stacks
  • Headers
  • Passing by Value vs. Reference

DD 5.1 -- 5.9

Mid-term Exam

17-18

Random Number Generation

  • rand()
  • srand()
  • enum

DD 5.10 -- 5.11

Assignment 4

19-20

Storage Classes and Scope Rules

  • Compiling with multiple source files
  • Storage classes
  • Scope rules

DD 5.12 -- 5.13

21

Recursion

  • Recursive factorial function
  • Fibonacci sequence
  • Recursion vs. iteration

DD 5.14 -- 5.16

Assignment 5

22-25

Arrays

  • Initializing 1D arrays
  • Applications
  • Passing arrays as arguments
  • Sorting
  • Searching
  • Multidimensional arrays
  • Variable length arrays

DD 6.1 -- 6.12

Assignment 6

26-28

Pointers

  • Defining and initializing
  • Pointer operators & and *
  • Passing by reference
  • const
  • sizeof
  • Pointer expressions and arithmetic
  • Pointers and arrays
  • Arrays of pointers
  • Pointers to functions

DD 7.1 -- 7.12

Assignment 7

29

Structures

DD 10.1 -- 10.7, 10.9, 10.10

30

Files

  • Files and streams
  • Sequential-access files
  • Random-access files

DD 11.1 -- 11.7

Assignment 8

31

The C Preprocessor

DD 13.1 -- 13.6, 13.10

Final Exam