COMPSCI – Computer Science
Courses Offered
Lower Divison | Upper Divison | Graduate
Lower Division
COMPSCI 115 INTRODUCTION TO C (2-0-2)(F/S). An introduction to the syntactic and execution characteristics of C, including selection statements, loops, arrays, functions, and pointers. Construction, compilation, debugging, and execution of complete programs that implement given algorithms or solve simple problems. Previous programming experience is recommended, though not mandatory; C is not ideal as a first programming language. PREREQ: Satisfactory placement score.
COMPSCI 117 INTRODUCTION TO C++ (3-0-3)(F/S). An introductory course in computer programming, using the C++ language in a Unix environment. Topics include: scalar types; aggregate types; pointers and reference types; statements; expressions; functions; libraries; and a brief introduction to classes, objects, and overloading. Emphasis is on: development, compilation, debugging, and execution of complete programs implementing given algorithms for numerical, scientific, and engineering applications. PREREQ: MATH 147 or satisfactory placement score.
COMPSCI 119 INTRODUCTION TO JAVA (2-0-2)(F,S). Syntactic and execution characteristics of Java. Translating simple algorithms into Java programs; coding, compiling, finding, and correcting errors, and executing the programs. PREREQ: MATH 108 or a satisfactory math placement score.
COMPSCI 120 INTRODUCTION TO PROGRAMMING CONCEPTS (2-0-2)(F,S). Fundamental programming concepts using the Alice interactive 3-D programming system. Intended as preparation for COMPSCI 125. PREREQ: MATH 108 or a satisfactory math placement score.
COMPSCI 125 INTRODUCTION TO COMPUTER SCIENCE I (4-0-4)(F,S). Introduction to object-oriented problem solving and programming. Software development process. Data and expressions, conditionals and loops, arrays and lists. Introduction to object-oriented design, UML diagrams, developing graphical user interfaces, basic searching and sorting. Note: COMPSCI 119 or 120 recommended for students with no programming experience. PREREQ: MATH 144 or MATH 147 or satisfactory math placement score.
COMPSCI 221 INTRODUCTION TO COMPUTER GRAPHICS AND INTERFACE DESIGN (3-0-3)(F)(Even years). Includes elementary rasterization, perspective and viewport transformations. Basics of graphical user interface design and construction, event-driven programming, callbacks, and Web programming. PREREQ: COMPSCI 125.
COMPSCI 225 INTRODUCTION TO COMPUTER SCIENCE II (4-0-4)(F,S). Recursion. Introduction to program correctness, testing and analysis of time and space requirements. Object-oriented programming and design, including hierarchies and inheritance. Abstract data types – both basic (lists, trees and sets) and derived (queues, stacks, priority queues, and dictionaries) – and their implementation and applications. Concrete data structures (linked lists, binary search trees, heaps, hash tables, etc.) Sorting and searching algorithms. PREREQ: COMPSCI 125.
COMPSCI 230 ETHICAL ISSUES IN COMPUTING (2-0-2)(S)(CID). Privacy, intellectual property rights, computer crime, codes of conduct. Risks and liabilities of computer-based systems. Electronic information and free speech. PREREQ: COMM 101, COMPSCI 225, ENGL 202, and ENGR 102 or PHIL 101.
COMPSCI 253 OBJECT-ORIENTED PROGRAM DEVELOPMENT IN C (2-0-2)(S). Introduction to object-oriented style of programming in C. Basic structure of C programs, function pointers, variable argument lists, other generic programming techniques. Building software with Make. Testing and debugging techniques. Case studies. (Pass/Fail.) PREREQ: COMPSCI 225.
Upper Division
COMPSCI 342 DATA STRUCTURES AND ALGORITHMS (4-0-4)(F,S). Introduction to design and analysis of algorithms, asymptotic analysis, recurrences, sorting algorithms and order statistics, data structures for hashing, balanced search trees, B-Trees and disjoint sets. Dynamic programming, greedy algorithms, graph algorithms, introduction to complexity of problems. Examples are drawn from various areas of computer science. PREREQ: COMPSCI 225, MATH 170, and MATH 187.
COMPSCI 354 PROGRAMMING LANGUAGES (3-0-3)(F). Principles of programming languages: design, syntax, semantics, information binding, strings, arithmetic, input/output, recursion and extensibility. PRE/COREQ: COMPSCI 342.
COMPSCI 357 INTRODUCTION TO ARTIFICIAL INTELLIGENCE (3-0-3)(F)(Odd years). Topics in artificial intelligence: heuristic search, game playing, rule-based systems, genetic algorithms, and neural networks. Significant project work demonstrating various AI techniques. PREREQ: COMPSCI 225.
COMPSCI 361 INTRODUCTION TO THE THEORY OF COMPUTATION (3-0-3)(S). Grammars, automata, Turing machines, decidability and complexity, language hierarchies, and normal forms. Concepts of NP completeness and reducibilities. Applications will be drawn from various areas of computer science. PREREQ: COMPSCI 342.
COMPSCI 367 (MATH 307) CRYPTOLOGY I (4-0-4)(F). Introduction to modular arithmetic. The study of: the RSA, El-Gamal, Diffie-Hellman, and Blum-Blum-Shrub public key cryptosystems, authentication and digital signatures, anonymity protocols. Protocol failures for these systems. Crosslisted with COMPSCI 367 and COMPSCI 567; credit may be received for only one of these three courses. PREREQ: MATH 170 and MATH 187.
COMPSCI 368 (MATH 308) CRYPTOLOGY II (4-0-4)(S). Introduction to groups, fields, polynomial rings and Lucas numbers. The study of: the Elliptic Curve, LUC, and NTRU public keys cryptosystems, authentication and digital signatures, anonymity protocols. Cross listed with MATH 308 and COMPSCI 368/568; credit may be received for only one of these three courses. PREREQ: MATH 170 and MATH 187.
COMPSCI 410 DATABASES (3-0-3)(S)(Odd years). Foundations of database management systems. Database models: relational, object and others. Database design: entity-relationship modeling, logical relational schema design, physical design, functional dependencies and normalization, and database tuning. Database application development using database interfaces embedded in host languages. PREREQ: COMPSCI 342.
COMPSCI 425 INTRODUCTION TO COMPUTER NETWORKS (3-0-3)(S). Concepts and implementation of TCP/IP internetworking: link, network, and transport layer protocols. Application layer services. Wireless networking basics. PREREQ: COMPSCI 253 and COMPSCI 342.
COMPSCI 430 PARALLEL COMPUTING (3-0-3)(F)(Even years). Models of parallel computation. Fundamental design patterns used in parallel algorithms: partitioning, divide and conquer, software pipelining, synchronous computations and load balancing. Implementation on parallel clusters. Design of parallel systems. PREREQ: COMPSCI 253 and COMPSCI 342.
COMPSCI 441 (ECE 432) COMPUTER ARCHITECTURE (3-0-3)(S). Structure of computer systems using processors, memories, input/output (I/O) devices as building blocks. Computer system instruction set design and implementation, including memory hierarchies, microprogramming, pipelining and multiprocessors. Issues and trade-offs involved in the design of computer system architectures with respect to the design of instruction sets. Applications of Hardware Description Languages (HDL) in the design of computer systems. May be taken for either COMPSCI or ECE credit, but not both. PREREQ: COMPSCI 117 or COMPSCI 125, and ECE 330.
COMPSCI 450 PROGRAMMING LANGUAGE TRANSLATION (4-0-4)(S). Theory and practice of formal language translation, experience with compiler construction tools under UNIX. Students work on significant projects. PREREQ: COMPSCI 253 and COMPSCI 342 and COMPSCI 354.
COMPSCI 453 OPERATING SYSTEMS (4-0-4)(F). Process management, concurrency, inter-process communication, synchronization, scheduling, memory management, file systems and security. Case studies of multiple operating systems. PREREQ: COMPSCI 253 and COMPSCI 342 and ECE 330.
COMPSCI 455 DISTRIBUTED SYSTEMS (3-0-3)(S)(Even years). Principles and paradigms of distributed systems. Communication, processes, naming, synchronization, consistency and replication, fault tolerance and security. In-depth coverage of Remote Procedure Call (RPC), Remote Method Invocation (RMI) and socket programming. Survey of major distributed systems. Several software projects. PREREQ: COMPSCI 453.
COMPSCI 464 COMPUTER GRAPHICS (3-0-3)(F)(Odd years). Mathematics and programming techniques for computer graphics that cover raster graphics, transformations, rendering pipeline, clipping algorithms, lighting models, shading and shadows, texture mapping, antialiasing, ray tracing, non-photorealistic graphics. MATH 275 or MATH 301 recommended. PREREQ: COMPSCI 342.
COMPSCI 471 SOFTWARE ENGINEERING (3-0-3)(F). A formal study of the software development process. Topics include: life cycle models, requirements definition, specification, design, implementation, validation, verification, maintenance, and reuse. Students work in small teams on significant projects. PREREQ: COMPSCI 342.
COMPSCI 472 OBJECT-ORIENTED DESIGN PATTERNS (3-0-3)(F)(Even years). Reviews object-oriented design principles, explains the goals and form of design patterns, and examines several well-known patterns. PREREQ: COMPSCI 342.
COMPSCI 488 SENIOR OUTCOME ASSESSMENT (0-0-0)(F,S). Required to graduate. In their last semester, senior students will take an outcome-assessment examination. (Pass/Fail.) PREREQ: Senior Standing.
COMPSCI 498 SEMINAR (1-0-1)(S)(FF). Research, writing, and an oral presentation of a current topic in computer science. (Pass/Fail.) PREREQ: COMM 101, COMPSCI 342, ENGL 202.