Computer Science: Third Year
MATH 330, Linear Algebra
COSC 450, Programming Paradigms
Linear algebra presents matrix algebra, vector spaces, and linear transformations. Its goal is to provide students with the skill to apply these mathematical tools to problems in computer science such as graphics, computer modeling, and numerical methods.
Programming Paradigms introduces three major programming models that complement the procedural and object-oriented approaches: the functional, declarative, and concurrent models. Each model is presented in the context of an associated programming language: Lisp, Prolog, and Java respectively. This course furthers the goal of providing experiences in multiple paradigms and languages in the undergraduate curriculum.
Operating Systems is a continuation in more depth of the topic introduced in the Computer Systems course. Operating systems are presented as multi-layer components that hide the details of hardware implementation in order to master the complexity of resource management. The course furthers the theme of abstraction in the curriculum and serves as an example of the power of abstraction in software design.
The goal of Automata Theory is to answer the question, What is computability, and what are its limits? Students learn the abstract models that help to answer these questions—finite automata, pushdown automata, and Turing Machines. The course prepares students for more advanced work in theoretical computer science and serves as a basis for applied work in language design and compiler construction.