This page will list all of the CS courses available to a student who has completed the first-year curriculum. The two first-year courses constitute the prerequisite to all of these classes; some of these classes may be prerequisites for others.. Students wishing direct placement into these classes must seek the permission of the department.
CS 408, Programming in C++ and the STL
Prerequisite Completion of the first-year curriculum in CS or permission of the department.
Description This course will give the proficient coder a strong beginning in using C++ and some aspects of C. This course has three parts. In the first and shortest part, The core syntax of C++ is rapidly developed and compared to that of Java. A programming project is then assigned to give the student an opportunity to build skill with the basics.i This project will incorporate components of the Standard Template Library. In the second part, , pointers and C++ memory management with new and delete are applied to programming problems that require run-time allocation of memory. The final portion of the course will address the C++ class structure. The students will develop several full-featured C++ classes, and use these to build an application.
Part I, Core C++ Syntax and Input-Output In this part of the course, we will develop C++ as a procedural language. Since many of the components of C++ are similar to those in Java, this transition will be a quick one. The overall architecture of programs in the two languages will be compared and contrasted. These topics will be addressed
- the structure of a C++ program and #include
- the C language and its relationship to C++
- C++ console and file IO
- variables, types, scope and constness
- C++ looping and forking
- C++ functions
- the vector and string STL classes; using templated classes
Part II, Arrays, Pointers and Dynamic Memory Allocation in C++ In this part of the course, we see what underlies the properties of dynamic data structures like vector and string. We learn how they are able to grow and shrink "on the fly" as we need them to. These topics will be addressed.
- array Declarations
- pointers and their relationship to arrays
- allocating memory with new and deallocating it with delete
- structures
- pointers to structures and the -> operator
- the vector and string STL classes
Part III, C++ Classes and Object-Oriented Programming In this capstone part of the course, students will create and use their own C++ classes that incorporate C++ procedure and which dynamically allocate and deallocate memory. These topics will be addressed.
- structures vs. classes
- the three-window setup for developing classes
- constructors and destructors
- member functions
- a comparison with Java
- operator overloading
- exception handling
CS 410 Data Structures and Algorithms I
Course Objectives This course falls into three parts. Each is described below. This course is getting a reformulation in Trimester 1 of 2011-12, so if you are registered at that time, be prepared to be a guinea pig.
Part I, Introduction to C in a Linux Environment This will teach the core of the ANSI C language. We assume the student is already proficient in programming in a higher-level language. The emphasis here will be on pointers, dynamic memory allocation and the writing of correct, leak-free programs. The struct construct will be used for creating composite types.
Programming will be done with the gcc suite in a UNIX environment. We will learn about the compilation process, including preprocessing, assembling, compiling, and linking.
Part II, System Programming We will devote some time to the system call interface and to writing low-level programs that interact directly with the file system and the Linux kernel.
Part III, One-Dimensional Data Structures This portion of the class is given over to implementing and using one-dimensional data structures including stacks, trees, queues and arrays.
Part IV, Final Project The students will propose and produce a final project that applies the techniques of this class in C.
This course continues for one trimester