Catalog Description - CS 1323 Honors

Introduction to basic programming techniques: expressions, functions, conditionals, iteration, data abstraction. Practice in the use of high-level programming languages. Emphasizes principles of software engineering and illustrates with examples from central areas of computer science.

Goals for CS 1323 Honors - Fall 1996

The honors section of CS 1323 will show how principles of mathematical reasoning apply to the construction of software through a programming method based on formulas and equations rather than the step-by-step recipes of conventional methods. The programming language for this portion of the course, Haskell, features a system of types that ensures proper usage of all program entities and a form of component specification that permits controlling access to those entities. The type-system helps programmers avoid frustrating errors that can consume their time without leading to better products or enhanced skills, and access control facilitates assembling software from abstract components. Experience with these ideas will provide a foundation for more advanced study, and understanding their formulation in Haskell will be a unique experience for most students. The last third of the course will introduce conventional programming methods, using the programming language C.

The work will focus on the seminal ideas, principles, and practices of computer science and is aimed at serious students of the subject who expect, eventually, to contribute to the profession. Accordingly studies and projects will emphasize assembling programs from components that supply operators and data expressed in terms of abstract entities that are made concrete at their points of usage, a fundamental concept in software construction. Other central ideas of computer science introduced in the course include a few of the elementary notions in the fields of text processing, information representation, computer graphics, sorting, and artificial intelligence.

Features of Haskell covered include definitions, sequences, functions, types, classes, intrinsic operators, libraries, higher-order functions, polymorphism, structures, recursive data types, recursive functions, file input/output, and interactive input/output.

Features of C covered include variables, ifs, loops, interactive input/output, file input/output, functions, and arrays, but not structures.

Students successfully completing the course will be able to understand Haskell software of substantial complexity and build programs equivalent to several hundred lines of code in a conventional programming language, such as C. Students will also be able to build and understand C programs as long as a few hundred lines.

Plan of Study

Coursework will require study from two texts, the construction of about ten equational programs and five conventional programs. There will be two midterm examinations and a final examination. Teams of five to six students will be organized at the beginning of the course, and about a third of the coursework will be completed in the form of team projects and examinations.

Because the work involves practice with computing systems, students should anticipate investing substantially more time than they would customarily expect to spend on a three-credit course. The amount of work outside of class necessary for success will, for most students, average more than 10 hours per week and will, for many students, exceed 20 hours per week. Last Modified: