Washington and Lee University

Washington and Lee University

Course Offerings

See our current courses for Winter '08.

A computer science major takes courses at three levels. A three-course introductory sequence teaches programming, problem solving, and software development with Python and Java. A four-course intermediate sequence examines fundamental principles of computer organization, data structures and algorithms, programming language design, and theory of computation. Majors can take advanced electives in areas such as graphics, artificial intelligence, robotics, Web applications, database management, operating systems, networks, and parallel computing. Opportunities to pursue independent projects and an honors thesis are also available.

Computer Science 101 (4) -- Survey of Computer Science
Prerequisite: Not open to students with previous credit in computer science. An overview of the discipline of computer science achieved through an introductory-level survey of a number of major areas of computer science. Topics include algorithms used for computer solutions of important practical problems, computer programming, digital logic applied to computer circuitry, computer architecture, data representation and organization, Web page basics, computer networks, and theoretical limits of computation. Lectures and formal laboratories. Staff
Fall, Winter
Computer Science 111 (4) -- Fundamentals of Programming I
A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories. Staff
Fall, Winter
Computer Science 112 (4) -- Fundamentals of Programming II
Prerequisite: Computer Science 111. A continuation of Computer Science 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python. Laboratory course. Staff
Fall, Winter
Computer Science 121 (4) -- Scientific Computing
Prerequisite: Not open to students who have taken Computer Science 211 or higher. 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. Levy
Winter
Computer Science 196 (3) -- Special Topics in Computer Science for Non-Majors
Special topics of current or general interest chosen on the basis of interest to faculty and students. Topics taught vary from year to year and are announced in advance of registration. Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 199 (3) -- Special Topics in Computer Science for Non-Majors
Special topics of current or general interest chosen on the basis of interest to faculty and students. Topics taught vary from year to year and are announced in advance of registration. (This course does not satisfy FDR or GE requirements.) Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 209 (3) -- Software Development
Prerequisite: Computer Science 112. 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. Lambert
Fall
Computer Science 210 (3) -- Computer Organization
Prerequisite: Computer Science 111. Multilevel machine organization studied at the levels of digital logic, microprogramming, conventional machine, operating system, and assembly language. Staff
Fall
Computer Science 211 (3) -- Algorithm Analysis
Prerequisite: Computer Science 112 and Mathematics 121. Computer representations of data structures as derived from mathematical models: stacks, queues, and linked lists. Access methods into data structures, such as hashing and tree searching. Storage allocation and deallocation procedures. Algorithms for manipulating such structures are introduced, analyzed, and implemented by the student. Staff
Winter
Computer Science 250 (3) -- Introduction to Robotics
Prerequisite: Computer Science 111 or 121 or permission of the instructor. This course combines readings from the contemporary robotics literature with hands‑on lab experience building robots with the popular Lego Mindstorms toolkit (provided). The lab experience culminates with a peer‑judged competition of robot projects proposed and built during the second half of the course. Levy
Offered when interest is expressed and departmental resources permit.
Computer Science 252 (3) -- Neural Networks and Graphical Models
Prerequisite: Computer Science 112. A survey of the major developments in neural and belief networks, from the early perceptron 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. Levy
Offered when interest is expressed and departmental resources permit.
Computer Science 253 (3) -- Genetic Algorithms
Prerequisite: Computer Science 112. A survey of the major developments in genetic/evolutionary algorithms, from the Simple Genetic Algorithm through modern multiobjective optimization methods. Topics include fitness landscapes, the Schema and Building Block Hypotheses, learning and the Baldwin Effect, and genetic programming, 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. Levy
Offered when interest is expressed and departmental resources permit.
Computer Science 295 (1-3) -- Language Laboratory
Prerequisite: Permission of the instructor. Introduction to a computer language, which will be chosen according to needs of students and of other computer science courses. Typical languages include Smalltalk, LISP, PROLOG. May be repeated once for degree credit with permission and if the languages are different. May only be used once toward the major requirements. Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 312 (3) -- Programming Language Design
Prerequisite: Computer Science 112 and 210, Mathematics 121. 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). Staff
Fall
Computer Science 313 (3) -- Theory of Computation
Prerequisite: Computer Science 112, Mathematics 121, and either Mathematics 102 or 122. 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. Staff
Winter
Computer Science 315 (3) -- Artificial Intelligence
Prerequisite: Computer Science 209. 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. Levy
Offered when interest is expressed and departmental resources permit.
Computer Science 317 (3) -- Database Management
Prerequisite: Computer Science 209. Database design with the entity-relationship model, the relational database model including normal forms and functional dependencies, SQL database query language, serverside scripting for Web access to databases. A major project to design and implement a database using a commercial package. Whaley
Offered when interest is expressed and departmental resources permit.
Computer Science 320 (3) -- Parallel Computing
Prerequisite: Computer Science 209 and 210. A survey of parallel computing including hardware, parallel algorithms, and parallel programming. The programming projects emphasize the message-passing paradigm. Necaise
Offered when interest is expressed and departmental resources permit.
Computer Science 321 (3) -- Computer Networks
Prerequisite: Computer Science 209. Intended as a first course in communication networks for upper-level students. Covers concepts and protocols underlying modern computer networks. Topics include network architecture and layering, routing and switching, the TCP/IP protocol and network applications. Theory and programming. Necaise
Offered when interest is expressed and departmental resources permit.
Computer Science 330 (3) -- Operating Systems
Prerequisite: Computer Science 209 and 210. 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. Necaise
Offered when interest is expressed and departmental resources permit.
Computer Science 332 (3) -- Compiler Construction
Prerequisite: Computer Science 210, 211, 312, and 313. Lexical analysis, parsing, context dependence, translation techniques, optimization. Students are expected to produce a compiler for a suitably restricted language. Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 340 (3) -- Interactive Computer Graphics
Prerequisite: Computer Science 209. A study of the underlying techniques and algorithms used in the display and manipulation of graphics images in an interactive environment. Topics include programming with Motif and the X-window system, two- and three-dimensional viewing and transformations, color models, and realistic rendering of images. A major component of the course is the development and programming of a variety of projects which demonstrate the topics discussed in class. Necaise
Offered when interest is expressed and departmental resources permit.
Computer Science 341 (3) -- Digital Image Processing
Prerequisite: Computer Science 209. Digital-image processing has become a familiar term recognized by a large percentage of the general public. The techniques of digital image processing can be seen in movies, commercials, local weather coverage, images from the Hubble Space Telescope, and even Web browsers. This course will introduce some of the basic filters and techniques of image processing used to manipulate and analyze overlaying, spatial filters, and histogramming. Necaise
Offered when interest is expressed and departmental resources permit.
Computer Science 395 (1) -- Seminar
Prerequisite: Permission of the instructor. Readings and conferences for a student or students on topics agreed upon with the directing staff. May be repeated for degree credit with permission and if the topics are different. A maximum of six credits may be used toward the major requirements. Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 396 (2) -- Seminar
Prerequisite: Permission of the instructor. Readings and conferences for a student or students on topics agreed upon with the directing staff. May be repeated for degree credit with permission and if the topics are different. A maximum of six credits may be used toward the major requirements. Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 397 (3) -- Seminar
Prerequisite: Permission of the instructor. Readings and conferences for a student or students on topics agreed upon with the directing staff. May be repeated for degree credit with permission and if the topics are different. A maximum of six credits may be used toward the major requirements. Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 401 (1) -- Directed Individual Study
Prerequisite: Permission of the department.  Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 402 (2) -- Directed Individual Study
Prerequisite: Permission of the department.  Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 403 (3) -- Directed Individual Study
Prerequisite: Permission of the department.  Staff
Offered when interest is expressed and departmental resources permit.
Computer Science 493 (3-3) -- Honors Thesis
Prerequisite: Senior standing and honors candidacy.  Staff
Fall-Winter

Resources For: