CS 201 Home

Course Goals


Class Slides


Class Syllabus






Course Description

Problem-solving and design using an object-oriented programming language. Introduces a variety of problem-solving techniques, algorithms, and data structures in object-oriented programming. 

Students should be able to:

  • Analyze and explain the behavior of simple programs involving the following fundamental programming constructs: assignment, I/O (including file I/O), selection, iteration, functions, pointers
  • Write a program that uses each of the following fundamental programming constructs: assignment, I/O (including file I/O), selection, iteration, functions, pointers Break a problem into logical pieces that can be solved (programmed) independently.
  • Understand the fundamentals of OO programming when applied to the web static web site design
  • Develop, and analyze, algorithms for solving simple problems.
  • Use a suitable programming language, and development environment, to implement, test, and debug algorithms for solving simple problems.
  • Write programs that use each of the following data structures (and describe how they are represented in memory): strings, arrays, structures, and STL class libraries including strings and vectors
  • Explain the basics of the concept of recursion.
  • Write, test, and debug simple recursive functions and procedures.
  • Explain and apply object-oriented design and testing involving the following concepts: data abstraction, encapsulation, information hiding, sub-classing, inheritance, templates Use a development environment to design, code, test, and debug simple programs, including multi-file source projects, in an object-oriented programming language.
  • Solve problems by creating and using sequential search, binary search, and quadratic sorting algorithms (selection, insertion)
  • Determine the time complexity of simple algorithms.
  • Students will also learn some problem-solving strategies

Major Topics Covered in Course
  1. Fundamental data storage and manipulation (types and variables, statements and expressions) 5 hours
  2. Functions 3 hours
  3. Classes (classes and objects, instance variables and instance methods, and encapsulation). 5 hours
  4. Flow of control (Boolean expressions, conditional statements, and loops). 10 hours
  5. Vectors 5 hours
  6. 2ndObject oriented Language (including compare and contrast), 2ndProgramming Environment, Arrays and Pointers, Functions 10 hours
  7. Inheritance (subclasses, dynamic binding, abstract classes, and interfaces). 5 hours
  8. Strings 3 hours
  9. Introduction to recursion. 3 hours
  10. Searching and sorting algorithms (linear and binary search, selection sort, insertion sort, and quick sort - introduced via recursive versions). 5 hours
  11. Algorithm analysis. 2 hours
  12. Problem Solving approaches (This section is dispersed appropriately throughout the semester to illustrate the above techniques.) 5 hours
  13. Software Engineering – design, testing, debugging (This section is dispersed appropriately throughout the semester to illustrate the above techniques.) 10 hours Exams 4 hours Final Exam -


Omar Aldawud (aldaoma@iit.edu)
Office: Rice Campus Room 230

Office Hours:  Monday 5:15 - 6:15

                    Tuesday, Thursday 6:15 - 7:15 PM

IIT Academic Calendar

630 - 682- 6021, Fax: 312.567.5067 CS Department

Mailbox: Rice Campus : Dr. Omar Aldawud CS201

Available by email including  weekends and evenings!!!!



Shulan Liu:   liushul@iit.edu

Office Hours: Monday and Wednesday: 11:30~1:30p.m. in S.B. lab


CS -201-071, 392
M 06:25-09:05PM
Rice Campus - Wheaton Room RI 148
LAB W 06:25-09:05PM Rice Campus - Wheaton SB 112E

The labs are designed to assist you in developing a more concrete understanding of the concepts introduced in lecture. They also serve as a springboard for the programming project that you create later in the semester. You are required to attend each lab session. Your work is graded during your scheduled lab session. See make-up lab policy.   Illness and university business are excused absences; proper documentation must be provided.
The labs for this class are designed to give you practical experience with the material discussed in lecture. They are NOT intended to produce a high-pressure environment. You should have your weekly assignment available at the beginning of each lab (portable media/email). An additional weekly lab problem will be given during lab which may involve writing new code, modifying code from your assigned lab work, and/or answering "analysis type" questions about your assigned work. All lab problems must be completed in the allotted time.

You will be assigned a programming project where you solve a real world problem. The project will consist of a design phase and an implementation phase. No late projects will be accepted. Each student is responsible for deleting his/her project from lab computers and taking all safeguards to prevent copying of the final project. The instructor has the right to test (written or oral) any student on his/her final project. All projects found to be similar to another student’s project will be given a grade of zero.

Approximate weights:

5% Weekly homework assignments graded during lab
15% Weekly lab problems
10% Programming project
5% Quiz #1
15% Quiz #2
20% Midterm Exam
25% Final Exam
2% Attendance
3% Lecture activities

Historically, semester letter grades have been assigned according to the following percentages.

A 90-100
B 80-89
C 70-79
D 60-69
E 0-59

 Any indication of copying or cheating during quizzes/exams, on labs, or on the programming project will result in an immediate zero for the assignment for all parties involved and notification of the student's advisor/department and the Undergraduate Dean. 

Sample Implementation of the RSD and DSD templates:

    Security Camera Store Then Click on Security Shop - RSD

    Dedicated Server Hosting then click on Web Hosting Project