CSCI 1200 - Fall 2007
Computer Science II
Home
  Contact Information

Announcements

Prerequisites
  Course Overview

Textbooks
  Web Resources
  Additional Tutoring

Grading

Calendar
  Lecture notes
  Lab materials
  Homework
  Test reviews

Schedule
  Lab Times
  Office Hours

Academic Integrity

Homework
  Due Date and Time
  Late Day Policy
  Compilers
  Electronic Submission

Programming Tips

C++ Development
  Cygwin
  Emacs
  Dev C++
  MinGW

Other Information
  Command Line Args
  File I/O
  Redirecting I/O

Prerequisites

We allow students at their own discretion to skip CS1 and register for CS2. Here are the concepts that we assume you have learned from CS1 or equivalent coursework or other programming experience.

  • Programming:
    • Arithmetic expressions, if/else statements
    • Writing your own functions, including the following:
      • Passing arguments to the function from the calling function
      • Reference variables (call by value vs. call by reference)
      • Returning a value from a function to the calling function
      • Scope and lifetime of variables, local vs. global variables
    • One and two dimensional arrays and/or vectors
    • while and for loops, including nested loops
    • Reading data from files, and writing data to files
    • Some basic understanding and use of classes
      • Creating your own simple classes
      • Calling member functions

  • Problem Solving: Given a problem you should be able to design an algorithm or algorithms to solve the problem, and implement and debug an efficient solution. You should have written a number of programs of 100 lines or more consisting of several different functions. Some examples:
    • Count the number of times each letter appears in a file
    • Find the maximum value in an array or vector
    • Insert a new element into a sorted array in its correct place
    • Find the value closest to the average in a vector
    • Find the two closest values in a vector

  • Algorithmic concepts: You should have seen and have a basic understanding of the following concepts:
    • Recursion
    • Run time analysis of algorithms (big O notation)
    • Elementary searching and sorting algorithms

Course Overview

CS2 is a course in elementary data structures and their use in programming. This includes both class design and features of the C++ programming language. Much of our discussion will be built around the design and use of the C++ standard library (STL). By using the standard library, students will be able to write reasonably sophisticated programs quickly.

C++ vs. Java

The language used in CS2 is C++ but you do not need to know C++ before taking CS2. Many students enter this course having started with Java instead of C++. If you are a reasonably proficient Java programmer, you should easily adapt to the differences between the two languages. The lecture and lab materials include comparisons between some of the properties of the two languages as an aid to the transition.

Warning

This course is substantially more difficult than CS1 and moves at a rapid pace. Students should not get behind at any point in the semester. Students should work practice problems and study examples from lecture. Working with other students and working with tutors and TAs are both encouraged, but students need to be certain they understand the material and can do problems on their own.