Course Offerings

Fall 2015

See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.

Fundamentals of Programming I

CSCI 111 - Levy, STAFF / Lambert (Multiple Sections)

A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.

Software Development

CSCI 209 - Sprenkle

An examination of the theories and design techniques used in software development. Topics include the software life cycle, design patterns, the Unified Modeling Language, unit testing, refactoring, rapid prototyping, and program documentation.

Programming Language Design

CSCI 312 - STAFF / Lambert

Formal language description tools, semantic concepts and syntactic constructs appropriate to diverse applications. Comparison of several high-level languages, such as Scheme, Java, ML, and PROLOG, and their implementations of these syntactic and semantic elements. Students learn the Scheme programming language and how to use it to write interpreters for other programming paradigms (object-oriented, logic-oriented, and type-inferencing).

Operating Systems

CSCI 330 - Sprenkle

Procedure initiation, environment construction, reentrancy, kernel functions, resource management, input/output, file structures, security, process control, semaphores and deadlock, and recovery procedures. The laboratory includes the opportunity to examine and modify the internals of an operating system.

Directed Individual Study

CSCI 403 - Lambert

Individual conferences. May be repeated for degree credit if the topics are different.


Spring 2015

See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.

Introduction to Robotics

CSCI 250 - Levy

This course combines readings from the contemporary robotics literature with hands-on lab experience building robots with the popular Lego Mindstorms NXT toolkit (provided). The lab experience culminates with a peer-judged competition of robot projects proposed and built during the second half of the term.

Distributed Systems

CSCI 325 - Lambert

In this course, students learn to design and develop distributed systems, i.e., collections of independent networked computers that function as single coherent systems. The concepts of communication, synchronization, consistency, replication, fault tolerance, and security are covered. In addition, case studies of real-world distributed systems (e.g., the Internet, distributed file systems, grid computing) are analyzed.


Winter 2015

See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.

Introduction to Computational Modeling

CSCI 102 - Levy

This course provides a hands-on understanding of the computational methods that support science and technology now and that will be essential for success in the science, engineering, and business worlds of the near future. The central theme of the course is building computational models of the processes that surround us every day, from the effects of drugs on the body to the formation of galaxies in the universe to the interactions of nations in the global economy. Classroom lectures and textbook readings are supplemented with lab exercises implementing the models using state-of-the-art software tools.

Fundamentals of Programming I

CSCI 111 - Salan

A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.

Fundamentals of Programming II

CSCI 112 - Lambert (Multiple Sections)

A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python. Laboratory course.

Computer Organization

CSCI 210 - Lambert

Multilevel machine organization studied at the levels of digital logic, microprogramming, conventional machine, operating system, and assembly language.

Algorithm Design and Analysis

CSCI 211 - Salan

Methods for designing efficient algorithms, including divide-and-conquer, dynamic programming, and greedy algorithms. Analysis of algorithms for correctness and estimating running time and space requirements. Topics include advanced data structures, graph theory, network flow, and computational intractability.

Theory of Computation

CSCI 313 - Levy

A study of the principles of computer science embodied in formal languages, automata, computability, and computational complexity. Topics include context-free grammars, Turing machines, and the halting problem.

Database Management

CSCI 317 - Mickel

Database design with the entity-relationship model, the relational database model including normal forms and functional dependencies, SQL database query language, server-side scripting for Web access to databases. A major project to design and implement a database using a commercial package.

Directed Individual Study

CSCI 403 - Levy, Salan (Multiple Sections)

Individual conferences. May be repeated for degree credit if the topics are different.

Honors Thesis

CSCI 493 - Salan, Sprenkle (Multiple Sections)

Honors Thesis.