Theory of Computation

Are there any limits to what computers can do? Does the answer to this question depend on whether you use a PC or a Mac? Is C more powerful than PASCAL? This seminar explores these questions by investigating several models of computation, illustrating the power and limitations of each of these models, and relating them to computational problems and applications. Topics include finite state automata, pushdown automata, grammars, Turing machines, the Universal Turing Machine, and computability.

Beginning Yoga

Yoga is an ancient practice from India that develops a balance of physical strength and flexibility and promotes evenness of mind. This class is an introduction to basic postures, meditation, and breathing techniques with a focus on unifying breath with movement. Revered for its therapeutic benefits, yoga can be practiced by people of all abilities with safe and healthy results.

Beginning Yoga

Yoga is an ancient practice from India that develops a balance of physical strength and flexibility and promotes evenness of mind. This class is an introduction to basic postures, meditation, and breathing techniques with a focus on unifying breath with movement. Revered for its therapeutic benefits, yoga can be practiced by people of all abilities with safe and healthy results.

Beginning Yoga

Yoga is an ancient practice from India that develops a balance of physical strength and flexibility and promotes evenness of mind. This class is an introduction to basic postures, meditation, and breathing techniques with a focus on unifying breath with movement. Revered for its therapeutic benefits, yoga can be practiced by people of all abilities with safe and healthy results.

Software Design

Building large software systems introduces new challenges to software development. Appropriate design decisions early in the development of large software can make a major difference in developing software that is correct and maintainable. In this course, students will learn techniques and tools to help them address these problems and develop larger software projects, improving their skills in designing, writing, debugging, and testing software. Topics include design patterns, UML, designing for maintainability, software architecture, and designing concurrent and fault tolerant systems.

Data Structures

Using Java. Solving problems with computers is accomplished by writing programs that operate on data to produce a desired result. The way data is organized and presented to the program can significantly affect its efficiency and simplicity and can sometimes determine whether or not a program can be written to solve the problem at all. This course presents ways of organizing data into 'data structures' and analyzes how structuring the data can improve program performance.This course is programming intensive.

Adv Object-Orientd Programming

This course builds on the basic programming concepts learned in Computer Science 101. Emphasis is on developing the skills needed to write more sophisticated programs. This includes strategies to aid in assuring the correctness of programs through the use of assertions and unit testing as well as advanced Java features such as inheritance, polymorphism, and network programming. We will also introduce some widely used data structures such as vectors and linked lists. This course is programming-intensive.
Subscribe to