CS 116 Syllabus

Table of Contents

Course Overview

Course Goals - 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.
  • 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 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.

(New) Topics Covered

  • File I/O and String tokenization
  • Exception handling
  • Inheritance and Polymorphism
  • Searching and Sorting
  • Algorithm distillation and analysis
  • Abstract data types
  • Arrays of objects; Iteration
  • Recursion and the stack

Prerequisites

CS 115, or previous experience programming with an object oriented programming language (e.g., Java, C++, Python). At a minimum, you should be familiar with the following concepts:

  • data types
    • declarations
    • limits/ranges
    • Boolean, numerical, string types
  • variables
    • assignment
    • initialization
    • primitive vs. reference types (not all languages!)
    • scoping and lifetime
  • primitive operators and semantics
  • methods/functions
    • definition
    • invocation
    • parameters & return values
  • classes and objects
    • definition
    • instantiation
    • class vs. instance variables/methods
  • control flow constructs
    • branches (if-then-else, switch)
    • looping (for, while, do-while)
  • simple input/output (I/O)
  • simple arrays and array iteration

A proficiency quiz will be administered at the beginning of the semester — it will not be graded, but performing poorly on it may indicate that you should be placed into a different class.

Textbooks

The following textbook is strongly recommended for this course:

Grading

Your final grade will be computed as follows:

  • 35% Labs
  • 15% Midterm exam 1
  • 15% Midterm exam 2
  • 15% Final exam
  • 10% Quizzes
  • 5% Attendance
  • 5% Participation

And here's the grade scale:

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

Grades are never curved, but exam scores may be linearly adjusted so that the class average is 75%. Note that you must score at least 50% on all exams (after normalization) in order to pass the class.

Labs

Lab exercises that ask you to develop programs based on material covered in class will be assigned on a regular basis, with writeups being posted to the course website. Some exercises will be completed in class with TA/instructor assistance, while others are to be completed at home. You will be assigned a grader at the beginning of the semester, and it is your responsibility to ensure that your work is submitted and graded by the stated due date for each lab.

Exams

All exams will be closed-book, closed-notes and cumulative. They will take the place of lecture/lab — their dates can be found on the course calendar. Makeup exams must be cleared with the instructor beforehand.

Quizzes

Unannounced quizzes will be periodically administered online — these quizzes will be fairly short in length, and will each be used to gauge your understanding of the current topic under discussion in class.

Attendance

Attendance is mandatory. Each unexcused absence will result in a half-percent deduction from the final score, up to a maximum of 5%. Beyond that, further action may be taken (letter grade reduction, etc.). A sign-in sheet will be passed around during each lecture — be sure to sign in!

Participation

Participating during class, contributing answers / questions on Piazza, and engaging in class-related discussion with TAs / the instructor will earn you participation credit. Come mid-semester you'll be told where you stand on your participation score (and how to make up for a deficiency, if needed).

Late Policy

Late assignments, unless cleared with the instructor, are subject to a 30% reduction in points. After 1 week (7 days) past the due date, an assignment will not receive any points at all, but may be submitted for feedback.

Academic Integrity

You are welcome to discuss assignments with classmates, but all final work must be your own. Plagiarism will result, at the very least, in all parties involved receiving a 0 for the plagiarized assignment – other disciplinary actions may be taken at my discretion.

The IIT code of Academic Honesty may be found in the undergraduate handbook.

Disability Accommodations

Reasonable accommodations will be made for students with documented disabilities. In order to receive accommodations, students must obtain a letter of accommodation from the Center for Disability Resources. The Center for Disability Resources (CDR) is located in Life Sciences Room 218, telephone 312 567.5744 or disabilities@iit.edu.