Consideration of a diverse range of problems in computer science from problems in the design of correct and efficient algorithms and the implementation of data structures through problems in the theory of computation.
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 281 | Assembly Language and Computer Architecture
Introduction to machine organization, machine structure, data representation, digital logic, and assembly language programming on a RISC based architecture.
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 240 | Software Engineering
Students study the design and implementation of large software systems. Topics include design methodologies, programming team organization, and management, program verification and maintenance, design patterns and software engineering tools.
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.