Home
Contact Information
Announcements
Syllabus
Learning Outcomes
Prerequistites
Textbooks
Web Resources
Additional Tutoring
LMS
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
C++ IDEs
Other Information
Command Line Args
File I/O
Redirecting I/O
|
Course Description
This course covers fundamental 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.
Learning Outcomes
Students who have successfully completed this course will be able to:
- Demonstrate strong problem solving skills in constructing
complete C++ programs to tackle exercises inspired by real-world
problems.
- Analyze the performance of algorithms and data structures.
- Select and use the most appropriate data structure from the C++
standard library (STL) for a particular programming task.
- Design and implement efficient customized data structures.
Prerequisites
We allow students at their own discretion to skip CSCI 1100 Computer
Science I and register for CSCI 1200 Data Structures. Here are the
concepts that we assume you have learned from CSI 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
C++ vs. Java:
The language used in this course is C++ but you do not need to know
C++ before taking this class. 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 CSI
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.
See also the Review of CSCI-1200 Computer Science II, Fall 2007.
|