Course Offerings

Fall 2016

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

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 - 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.

Software Development

CSCI 209 - Sprenkle, Sara E.

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.

Neural Networks and Graphical Models

CSCI 252 - Levy, Simon D.

A survey of the major developments in neural and belief networks, from the early perception models of the 1940s through the probabilistic Bayesian networks that are a "hot topic" in artificial intelligence today. Topics include the back-propagation algorithm, simple recurrent networks, Hopfield nets, Kohonen's Self-Organizing Map, learning in Bayesian networks, and Dynamic Bayesian Networks, with readings from both popular textbooks and the scholarly literature. A major focus of the course is on writing programs to implement and apply these algorithms.

Programming Language Design

CSCI 312 - Helmuth, Thomas M. (Tom)

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).

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.

Mobile-Application Development

CSCI 318 - Levy, Simon D.

Students learn how to develop programs for mobile devices, such as cell phones and tablets. The target operating system is either Android or iOS, depending on the instructor offering the course. Classroom lectures on mobile computing and a program development environment are supplemented by extensive hands-on programming assignments, leading to an independent application project of the student's devising. The course culminates with a presentation of each student's application, and an optional upload to the appropriate site for distribution.

Honors Thesis

CSCI 493 - Sprenkle, Sara E.

Honors Thesis.

Spring 2016

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.

Genetic Programming

CSCI 253 - Helmuth, Thomas M. (Tom)

Genetic programming borrows concepts from biological evolution in order to evolve populations of computer programs. These populations undergo artificial selection and variation, searching for a program that solves a given problem. In this course, students learn about the genetic programming algorithm, implement it using the Clojure programming language, and conduct independent projects to add functionality to their implementations. Students also read and review recent research articles in the field. No prior knowledge of Clojure is required, with students learning the language and the functional programming paradigm during the course.

Software Engineering through Web Applications

CSCI 335 - Sprenkle, Sara E.

In this course, students learn to develop high-performance software for Web applications using advanced software engineering techniques. The concepts of client-server computing, theories of usable graphical user interfaces, models for Web-based information retrieval and processing, and iterative development are covered.

Winter 2016

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

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.

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.

Directed Individual Study

CSCI 401 - Levy, Simon D.

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

Directed Individual Study

CSCI 403 - Lambert, Kenneth A. (Ken)

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

Directed Individual Study

CSCI 403 - Sprenkle, Sara E.

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

Honors Thesis

CSCI 493 - Sprenkle, Sara E.

Honors Thesis.