Computer Science Courses
101. Introduction to Computers
An introduction to uses of computers in a variety of application areas.
115. Introduction to Web Authoring
116. Animation with Alice
Students learn to create 3D computer animations using Alice programming. The Alice programming language makes it easy to produce an animation for telling a story, playing a game, or developing a video to share on the Web. In Alice, 3D objects populate a virtual world, and students develop fundamental programs to move the objects.
150. Scientific Investigations Using Computation
With improved computational abilities and the explosion of the amount of scientific data, practicing scientists now routinely implement computation to test hypotheses and guide their research. Thus, joining theory and experiment, computation is the third major paradigm of science. Students in this course will explore important science concepts and using computation tools implement the scientific method to gain a better understanding of the natural world.
201. Modeling and Simulation for the Sciences
An introduction to modeling and simulation as part of the interdisciplinary field of computational science. Large, open-ended scientific problems often require the algorithms and techniques of discrete and continuous computational modeling and Monte Carlo simulation. Students learn fundamental concepts and implementation of algorithms in various scientific programming environments. Throughout, applications in the sciences are emphasized.
235. Programming and Problem Solving
Students learn to develop programs using an object-oriented language. Students are introduced to problem solving and algorithm development with emphasis on good programming style.
270. Independent Study in Computer Science
Independent study of selected topics in Computer Science at an intermediate level. It is intended for students who do not plan to major in Computer Science as well as for those who do. Specific topics vary from semester to semester.
280. Selected Topics in Computer Science
Selected topics in Computer Science at an intermediate level. It is intended for students who do not plan to major in Computer Science as well as for those who do. Specific topics vary from semester to semester.
310. Computer Graphics
An introduction to computer graphics. Particular emphasis is placed on the algorithms used to produce 2D and 3D graphics. Topics include graphics devices, graphics primitives, drawing tools, vectors, transformations, 3D viewing, polygonal meshes, lighting, and shading models.
315. Computer Networks
An introduction to computer networks including network architecture, communication protocols, algorithms, and the current state of technology used to implement computer networks.
320. Programming Languages
A comparative study of high-level programming languages, including study of the design, evaluation, and implementation of such languages. Emphasis is placed on the ways in which such languages deal with the fundamentals of programming.
330. Introduction to Databases
A study of data models, including relational, object-oriented, hierarchical, and network models. Topics include the theory of normal forms, database design, query languages, and implementation of databases.
335. Advanced Web Programming
340. Theory of Computation
A study of formal models of computation such as finite state automata, push-down automata, and Turing machines, along with the corresponding elements of formal languages. These models are used to provide a mathematical basis for the study of computability and to provide an introduction to the formal theory behind compiler construction.
350. Data Structures
An introduction to the formal study of data structures, such as arrays, stacks, queues, lists, and trees, along with algorithm design and analysis of efficiency.
351. Advanced Data Structures
Advanced data structures, advanced object-oriented programming concepts, and advanced program design principles.
360. Operating Systems
A study of fundamental concepts that are applicable to a variety of operating systems. Such concepts include processes and threads, process coordination and synchronization, scheduling, physical and virtual memory organization, device management, file systems, security and protection, communications and networking.
365. High Performance Computing
An introduction to the concepts, tools, languages, and algorithms for solving problems on massively parallel and distributed computers. Advanced computer architectures; performance and optimization; and the design, analysis, and implementation of applications in parallel are studied.
370. Computational Science: Data and Visualization
An introduction to data and visualization, part of the interdisciplinary field of computational science. The course contains a brief introduction to the network environment and the UNIX operating system. Because large Web-accessible databases are prevalent for storing scientific information, the course covers the concepts and development of distributed relational databases. Effective visualization of data helps scientists extract information and communicate results. Students will learn fundamental concepts, tools, and algorithms of computer graphics and scientific visualization in three dimensions. Throughout, applications in the sciences are emphasized.
410. Software Engineering
A study of software engineering through a project-oriented approach. The emphasis is on the specification, organization, implementation, testing, and documentation of software. Students work in groups on various software projects.
An exploration of the design and construction of compilers to implement modern programming languages with a focus on procedural and object-oriented programming languages. Students implement a compiler for a small object-oriented programming language. Topics include scanning, parsing, semantic analysis, and code generation as well as garbage collection and optimization.
An introduction to cryptology and modern applications. Students will study various historical and modern ciphers and implement select schemes using mathematical software.
460. Computer and Network Security
An introduction to computer security in a networked environment. Topics will include ethical and social issues; type of attacks on computers and defenses; physical security and systems administration; authentication, access controls, and biometrics; encryption and network security; and the underlying formalisms and technologies relating to security.
470. Advanced Independent Study in Computer Science
Independent study of selected topics in Computer Science at an advanced level. Specific topics vary from semester to semester.
480. Advanced Topics in Computer Science
A study of selected topics in Computer Science at an advanced level. Specific topics vary from semester to semester