Catalog descriptionStudy of the generic programming approach to design and systematic classification of software components. Techniques for achieving correctness, efficiency, and generality of algorithms, data structures, and memory management. Methods of structuring a library of generic software components for maximum usability are practiced in a significant design and implementation project. Prerequisite: CSCI-2300 or equivalent. 3 credit hours
CSCI-2300 Data Structures and AlgorithmsThe main background needed is programming experience and familiarity with data structures and algorithms, including basic efficiency analysis techniques. Programming will be done primarily in C++ and G (a research language designed specifically for generic programming). The more advanced C++ and G language and library features will be thoroughly discussed and illustrated with example programs.
What it's notThis course is not on, but does draw ideas and goals from
Homework, projects, exams, and gradingThere will be in-class assignments, homework assignments, a programming project, and two exams. Only a few of the in-class and homework assignments will be graded; they will count about 10% of the course grade.
The programming project (which will be assigned in several parts) will count about 40% of the course grade.
The two exams will each count about 25% of the course grade.
CollaborationExcept in cases in which collaboration is specifically permitted, you must work on assignments individually. Particularly for some parts of the project, collaboration may be permitted or required, but in those cases the instructions given with the assignment will say so.
On the exams, collaboration is never permitted; all work must be your own.
I don't expect any incidents of academic dishonesty in this course, but any that do occur will be dealt with according the policies stated in the Rensselaer Handbook.
Restricted access to some filesSome files, including most of the homework and exam solutions, have restricted access. These are the files that reside in the codebase or exercises directories in the course subversion repository, which requires you to log in with your CSLab username and password. You are permitted to download any of these files for your own use, and you may share them with others in the Rensselaer community, subject to restrictions against collaboration as specified in homework or project assignments. Such files should not be made available outside outside the Rensselaer community; in particular, don't repost them on any public Web page. Access to some files is restricted because textbook authors and other course instructors generally do not want exercise or problem solutions widely published, for obvious reasons.