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 Room 16, FCIT Old Campus
Office Hours: Tuesday, 2:30 p.m. - 3:30 p.m.
Google Classroom: https://classroom.google.com/c/ODg0NDk1ODM1MTU0
TAs: Hassan Ayoub (bcsf23m004@pucit.edu.pk) and Afaq Hussain Bhutta (bcsf23m003@pucit.edu.pk)
Labs: Friday, 9:00 a.m. - 12:00 p.m in New Seminar Hall

Primary textbook

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

CC211 16-week course map

WeekTopicsReading mapLabsQuizzesAssignments
1Orientation, C++ environment and OOP motivationDeitel 10/e, selected Chapter 1, 2.Lab1Quiz 1
2Classes, objects and encapsulation3.1, 3.2, 3.3.
Constructors, Initialization, and Valid State3.4, 3.5, 3.6.Lab2Quiz 2
3Destructors, Object Lifetime, and Dynamic Objects9.7, 9.8, 9.14.Lab3Quiz 3
4Copying, const and static members9.10, 9.11, 9.15.Lab4Quiz 4
5Composition, aggregation and arrays of objectsSelected Chapters 3, 7 and 9.Lab5Quiz 5
6Operator overloading IChapter 10 selected sections.Lab6Quiz 6Assignment 1
7Operator overloading IIChapter 10 selected sections.Lab7Quiz 7
8Friends, streams and conversionsSelected Chapters 9-10.Lab8
9InheritanceChapter 11.Lab9
10Virtual functions and dynamic bindingChapter 12 selected sections.Lab10
11Abstract classes and advanced polymorphismSelected Chapter 12; course-authored examples.Lab11
12Multiple inheritance, relationships and UMLSelected Chapters 9 and 11; UML material as appropriate.Lab12
13Streams and file handlingSelected Chapters 13-14.Lab13
14Function and class templatesSelected Chapter 18; course-authored specialization material.Lab14
15Partial specialization and STLSelected Chapter 15.Lab15
16Exceptions and course integrationSelected Chapter 17.Lab16

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