Home > Academics > Computer Science

Courses

101. Introduction to Computers
An introduction to uses of computers in a variety of application areas.

115. Introduction to Web Authoring
An introduction to effective communications using Web technologies. No programming background is required. This course focuses on the technologies and tools to construct interesting and effective Web sites, including HTML, CSS, and JavaScript.

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.

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. Cross-listed as MATH 201. Prerequisites: MATH 181 or permission of instructor.

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. Completion of this course with a C or higher is a prerequisite for all 300- and 400- level courses in Computer Science.

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. Prerequisite: Permission of the instructor.

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. Prerequisite: Permission of the instructor.

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. Prerequisites: MATH 181 and C or higher in COSC 235.

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. Prerequisites: PHY 203 and C or higher in COSC 235.

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. Prerequisites: C or higher in COSC 235 and in PHY 203, or C or higher in COSC 350.

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. Prerequisite: C or higher in COSC 235.

335. Advanced Web Programming
An advanced study of the design and programming of Web applications. Topics include commercial Web sites; programming in languages, such as HTML, JavaScript, ASP, PHP, and SQL; using Web application frameworks, programming Web interfaces to databases; Web design concepts; and computer security. Prerequisite: C or higher in COSC 330 or 350.

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. Prerequisites: MATH 181 and C or higher in COSC 350.

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. Prerequisite: C or higher in COSC 235.

351. Advanced Data Structures
Advanced data structures, advanced object-oriented programming concepts, and advanced program design principles. Prerequisites: MATH 235 and C or higher in COSC 350.

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. Prerequisite: C or higher in COSC 350.

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. Prerequisite: C or higher in COSC 350

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. Prerequisite: C or higher in COSC 235.

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. Prerequisite: C or higher in COSC 350.

420. Compilers
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. Prerequisites: C or higher in COSC 350 and PHY 203.

435. Cryptology
An introduction to cryptology and modern applications. Students will study various historical and modern ciphers and implement select schemes using mathematical software. Cross-listed with MATH 435. Prerequisites: MATH 220 and either MATH 235 or 260.

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. Prerequisite: Permission of the instructor.

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. Prerequisite: Permission of the instructor.