Skip navigation

Computer Science

Course Descriptions

3000 Seminar: The Real World (1 credit)

A series of lectures by alumni and others on surviving culture shock when leaving the University and entering the job world. Open to all students regardless of major.

3200 Discrete Structures (4 credits)

Covers discrete mathematical structures and non-numerical algorithms; graph theory, elements of probability, propositional calculus, Boolean algebras; emphasis on applications to computer science. Cross-listed as MATH 3200. Prerequisites: MATH 2200/COMP 2300 and COMP 1672/COMP 1771.

3341 Multimedia Systems (4 credits)

Covers fundamental issues in design and implementation of multimedia applications, technologies in multimedia systems such as multimedia data representation, compression, coding, networking, data management, and I/O technologies. Prerequisite: COMP 3361.

3351 Programming Languages (4 credits)

An introduction to programming languages as a component of software development environment; binding, scope, lifetime, value and type of a variable; run-time structure - static, stack-based and dynamic languages; parameter passing - call by reference, value, result, value-result and name; subprogram parameters; role played by side effects, dangling pointers, aliases and garbage; garbage collection; data abstraction - study of object-oriented, functional, and logic languages. Prerequisites: COMP 2370, COMP 2691 and COMP 2355.

3352 Elements of Compiler Design (4 credits)

An introduction to compiler construction where students are required to design and implement major pieces of a compiler. Topics include lexical analysis, regular expressions, finite automata, parsing, context-free grammars, predictive parsing, LR parsing, abstract syntax, semantic actions, abstract parse trees, semantic analysis, symbol tables, and type-checking, activation frames, and intermediate code generation. Prerequisite: COMP 3351.

3353 Compiler Construction (4 credits)

A continuation of COMP 3352 in which students build a more advanced compiler with optimizations, including basic blocks and traces, instruction selection, liveness analysis, register allocation, garbage collection, object-oriented languages, functional programming languages, polymorphic types, dataflow analysis, and loop optimizations. Prerequisite: COMP 3352.

3361 Operating Systems I (4 credits)

An introduction to the fundamental concepts of an operating system, its functions and design, and the algorithms behind the efficient management of computing resources. Topics covered include operating system services, structure, interface; processes and threads, CPU scheduling, process synchronization, deadlocks, paging, virtual memory, file systems, mass-storage systems and I/O systems. Prerequisites: COMP 2355, COMP 2370 and COMP 2691.

3371 Advanced Data Structures & Algorithms (4 credits)

Covers advanced data structures, algorithm design and analysis of algorithms; asymptotic complexity, recurrence equations, lower bounds; algorithm design techniques such as incremental, divide and conquer, dynamic programming, randomization, greedy algorithms, etc. Prerequisite(s): COMP 2370 and COMP 3200.

3381 Software Engineering I (4 credits)

An introduction to software engineering. Topics include software processes, requirements, design, development, validation and verification and project management. Prerequisite: COMP 2370.

3382 Software Engineering II (4 credits)

A continuation of COMP 3381. Topics include component-based software engineering, model-driven architecture, and service-oriented architecture. Prerequisite: COMP 3381.

3410 World Wide Web Programming (4 credits)

Covered topics include creating WWW pages with HTML, accessing user-written programs via CGI scripts, creating forms, imagemaps and tables, and Java programming principles and techniques. Prerequisite: COMP 2355.

3421 Database Organization & Management I (4 credits)

An introduction to database concepts and design. Topics include database design, ER modeling, database normalization, relational algebra, SQL, physical organization of records and clocks, heap files, sorted files, hashing, extendible hashing, linear hashing and B trees. Prerequisite: COMP 2370.

3501 Introduction to Artificial Intelligence (4 credits)

Covers fundamental concepts of artificial intelligence including general problem-solving techniques, logic, search, probabilistic reasoning, and learning. Prerequisites: MATH 2200/COMP 2300 and COMP 2370.

3621 Computer Networking (4 credits)

An introduction to computer networks with an emphasis on Internet protocols. Topics include network topologies, routing, ethernet, TCP/IP, UDP, DNS, SMTP, HTTP, study of client/server and peer-to-peer architectures, and performance modeling. In addition, projects include significant socket programming via the development of a client/server or peer-to-peer protocol. Co-requisite: COMP 3361. Prerequisite: COMP 2370 and COMP 2355.

370X Special Topics (4 credits)

Recently offered topics include AI for Traditional Games, Computer Security, Data Mining, Foundations of Information Privacy, Game Capstone, Introduction to Game Design, Multitouch, Secure Software, Software Testing, Video Game AI. Prequisites vary according to offered topic.

3721 Computer Security (4 credits)

This course examines how to protect the integrity, availability, and confidentiality of computer information and the resources used to enter, store, process, and communicate it. The focus is on technical and operational controls; encryption, malware; security controls; secure forms of authentication; designing trusted systems; database security; security on the internet and in distributed systems; multimedia security; firewalls; intrusion detection, and legal and ethical issues, including privacy. Case studies illustrate examples of secure systems and security breaches. Prerequisite: COMP 3361.

3801 Introduction to Computer Graphics (4 credits)

An introduction to computer graphics, fundamentals of graphics hardware, scan conversion algorithms, 2-D and 3-D viewing transformations, windows, viewports, clipping algorithms, mathematics for computer graphics, graphics programming using a standard API. Prerequisite: COMP 2370.

3821 Game Programming I (4 credits)

An introduction to game programming in which students develop a fully working 2D game in teams while learning the fundamentals of game programming. The entire architecture of a game is developed in this course and includes topics such as the game design document; coding for a real-time system; sprites; 2D camera, screen, and world space; 2D matrix transformations; scene management; collision detection and response; data-driven design; sound management; pathfinding and flocking; conversation graphs; game rules; and design patterns. Prerequisite: COMP 2370.

3822 Game Programming II (4 credits)

A continuation of Game Programming I, with a focus on 3D games and architectures. The primary goals of this course include building major subsets of a 3D game engine such as terrain and foliage generation, indoor and outdoor scene management, animations, particles, scripting, sound, video, user-interfaces, physics and artificial intelligence. Prerequisites: COMP 3801 and COMP 3821.

3904 Internship/Co-Op in Computing (0 to 10 credits)

Practical experience in designing, writing and/or maintaining substantial computer programs under supervision of staff of University Computing and Information Resources Center. Prerequisites: COMP 2370 and approval of internship committee (see department office).

3991 Independent Study (1 to 10 credits)

Cannot be arranged for any course that appears in the regular course schedule for that particular year.

3992 Directed Study (1 to 10 credits)

Used where a regular catalog course is offered individually to a single student.

4352 Elements of Compiler Design (4 credits)

Graduate level course equivalent to COMP 3352, but includes additional requirements for graduate students. In particular, students are required to understand compiler development at a graduate level and will read and write summaries of recent research in compiler development. Projects will have additional requirements over undergraduate versions. Prerequisite: COMP 3351.

4353 Compiler Construction (4 credits)

Graduate level course equivalent to COMP 3353, but includes additional requirements for graduate students. In particular, students are required to understand compiler design and implementation at a graduate level and will read and write summaries of recent research in compiler development. Projects will have additional requirements over undergraduate versions. Prerequisite: COMP 4352.

4372 Theory of Algorithms (4 credits)

Covers a set of assorted topics in algorithms: NP-completeness, lower bound theory, approximation algorithms, amortized complexity and data structures, randomized algorithms, string algorithms, graph algorithms, linear programming, computational geometry. Prerequisite: COMP 3371.

4384 Secure Software Engineering (4 credits)

Covers many of the classical flaws in systems that can lead to security problems, including buffer overruns, format string problems, overflows, exception issues, race conditions, etc. We also cover some webapp-specific topics such as SQL injection attacks, and cross-site scripting (XSS) attacks. Prerequisites: COMP 2355 and COMP 2691.

4600 Seminar in Computer Science (0 credits)

Presentations by faculty/student and external researchers on topics not generally encountered in formal courses.

4621 Computer Networking (4 credits)

Graduate level course equivalent to COMP 3621, but includes additional requirements for graduate students, helping them become capable of performing research at a graduate level in networking. Students additionally read important research papers in networking and develop projects with more advanced requirements than undergraduates. Prerequisites: COMP 2370 and COMP 2355 (or equivalents). Co-requisite: COMP 3361.

470X Advanced Topics (4 credits)

Recently offered topics include AI for Traditional Games, Augmented Reality, Computational Geometry, Computer Security, Data Mining, Embedded Systems, Foundations of Information Privacy, Quantitative Software Engineering, Single Agent Search, Software Testing. Prequisites vary according to offered topic.

4721 Computer Security (4 credits)

Graduate level course equivalent to COMP3721. This course examines how to protect the integrity, availability, and confidentiality of computer information and the resources used to enter, store, process, and communicate it. The focus is on technical and operational controls; encryption, malware; security controls; secure forms of authentication; designing trusted systems; database security; security on the internet and in distributed systems; multimedia security; firewalls; intrusion detection, and legal and ethical issues, including privacy. Case studies illustrate examples of secure systems and security breaches. Prerequisite: COMP 3361.

4991 Independent Study (1 to 10 credits)

Cannot be arranged for any course that appears in regular course schedule for that particular year.

4992 Directed Study (1 to 10 credits)

Used where a regular catalog course is offered individually to a single student.

4995 Independent Research (1 to 17 credits)

Research projects undertaken in conjunction with a faculty member.

5991 Independent Study (1 to 17 credits)

Cannot be arranged for any course that appears in regular course schedule for that particular year.

5995 Independent Research (1 to 17 credits)

Research projects undertaken in conjunction with a faculty member.