Course Offerings

Fall 2017

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 - Lambert, Kenneth A. (Ken)

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 I

CSCI 111 - Sprenkle, Sara E.

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 I

CSCI 111 - Keady, John P. (J.P.)

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 - Lambert, Kenneth A. (Ken)

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.

Theory of Computation

CSCI 313 - Levy, Simon D.

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.

Artificial Intelligence

CSCI 315 - Levy, Simon D.

Basic concepts of heuristic search, game playing, natural language processing, and intelligent systems, with a focus on writing programs in these areas. Course combines a discussion of philosophical issues with hands-on problem solving.

Distributed Systems

CSCI 325 - Sprenkle, Sara E.

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.

Spring 2017

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, Simon D.

This course combines readings from the contemporary robotics literature with hands-on lab experience building robots (equipment provided) and programming them to do various tasks. The lab experience culminates with a peer-judged competition of robot projects proposed and built during the second half of the term.

Winter 2017

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 - Sprenkle, Sara E.

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, Kenneth A. (Ken)

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.

Scientific Computing

CSCI 121 - Levy, Simon D.

An introduction to computer programming for scientific applications and a survey of the main methodological areas of scientific computation. The course provides the tools needed for students to use computers effectively in scientific work, whether in physics, chemistry, mathematics, economics, biology, psychology, or any field involving quantitative work. Programming in Matlab, a scientific-computing software package, with a focus on topics relevant to students' major fields of study. Lectures and formal labs.

Computer Organization

CSCI 210 - Lambert, Kenneth A. (Ken)

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

Algorithm Design and Analysis

CSCI 211 - Helmuth, Thomas M. (Tom)

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 - Helmuth, Thomas M. (Tom)

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.

Seminar

CSCI 397 - Sprenkle, Sara E.

Readings and conferences for a student or students on topics agreed upon with the directing staff. May be repeated for degree credit if the topics are different. A maximum of six credits may be used toward the major requirements.

Winter 2017, CSCI 397-01: Seminar: Software Tools (3). Prerequisite: CSCI 209. A study of software tools and environments commonly used throughout the software life cycle and beyond. The seminar focuses on the tools used in the software life cycle, the goals of each tool, how the tools are used in practice, and the technology behind the tools. Students learn how to choose from among a variety of different tools for a given software engineering task. Tools include integrated development environments, version control, software testing, build tools, static analysis, debugging, and data analysis. Unix commands and bash scripting are also covered. Sprenkle.

Honors Thesis

CSCI 493 - Sprenkle, Sara E.

Honors Thesis.