Subject Description
Computer Science

CSCI 291 | Programming Language Paradigms

Declarative programming languages are an important alternative to languages (such as C, C++, and Java) that use the more familiar imperative programming paradigm. This course introduces the functional and logic programming paradigms in depth through assignments in the programming languages Haskell and Prolog. These languages are based on models of computation that are fundamentally different from the von Neumann model underlying imperative programming languages, and exposure to these new paradigms provides valuable perspective on programming and problem solving in general.

CSCI 261 | Computer Science II

This course is a continuation of CSCI 161. It provides an introduction to the study of fundamental data structures and their associated algorithms. Students learn how to choose appropriate data structures and algorithms for particular problems. They learn about lists, stacks, queues, trees, sorting, searching, abstract data types, and object-oriented programming using an object-oriented programming language. A weekly laboratory is required.

CSCI 161 | Introduction to Computer Science

This course is an introduction to computer science and programming. The programming language Java is used to illustrate concepts in computer science. The course emphasizes the use of the computer as a problem-solving tool and the development of good programming style. CSCI 161 is the introductory course for students planning to major or minor in computer science. A weekly laboratory is required.

CSCI 141 | Programming for Natural Sciences

This course is an introduction to computer science and programming intended for students in the natural sciences. The emphasis is on problems that might come up in a modern research laboratory. Assignments and exercises are done in Python programming language, which is favored by many natural scientists. The course teaches how to maintain an electronic notebook of calculations, to complement the traditional lab notebook. There is also a focus on standard data structures and good programming techniques, giving the student a solid grounding in modern programming techniques.

Computer Science

Computer scientists design and study algorithms (computational problem-solving strategies) to solve difficult real-world problems, learn software engineering patterns to break down large projects into manageable pieces, and study the design of programming languages themselves.