Academics
  /  
Courses
  /  
Descriptions
COMP_SCI 211: Fundamentals of Computer Programming II

Quarter Offered

Fall : 9:40-11 TuTh ; Tov
Winter : 2-3:20 TuTh ; Tov & Ghena
Spring : 2-3:20 TuTh ; Tov

Prerequisites

COMP_SCI 111 or 150

Description

CATALOG DESCRIPTION:  CS 211 teaches foundational software design skills at a small-to-medium scale. We aim to provide a bridge from the student-oriented How to Design Programs languages to real, industry-standard languages and tools. In the first half of the course, you’ll learn the basics of imperative programming and manual memory management using the C programming language. In the second half of the course, we’ll transition to C++, which provides abstraction mechanisms such as classes and templates that we use to express our design ideas. Topics include expressions, statements, types, functions, branches and iteration, user-defined types, data hiding, basic UNIX shell usage, and testing.

  • This course is a required Core course in the CS curriculum in McCormick and Weinberg

REQUIRED TEXTBOOK: N/A

COURSE INSTRUCTOR: Jesse A. TovBranden Ghena (Fall, Winter & Spring)

COURSE COORDINATOR: Prof. Sara Owsley Sood

PREREQUISITE: COMP_SCI 111 or 150

DETAILED COURSE TOPICS:

  • C/C++
    • Introduction to software engineering.
    • Basic data types, variables, computer arithmetic, expressions, parentheses.
    • Basic I/O – cout, cin.
    • Introduction to classes – defining one's own data types
    • Flow of control – sequential, test-and-branch, and iteration. Boolean expressions.
    • Arrays, pointers, and strings.
    • Functions: call by value and call by reference, references vs. pointers, stack frames.
    • Function overloading
  • INTRODUCTION TO CLASSES:
    • Structures and classes, data hiding and encapsulation.
    • Public and private members, constructors, unions.
    • Interface vs. implementation.
    • Class destructors and copy constructors, the = operator, deep versus shallow copies.
    • C++ operator overloading.
    • Heap space, the new/delete operators.
    • Inheritance and derived classes, is-a hierarchies and composition of classes.
    • Virtual functions and polymorphism.
    • Linked list processing: stacks and queues, trees and recursion.
  • Introduction to UNIX – processes, file management, redirection and piping, make files.

GRADES: Varies by instructor