Undergraduate Computer Science Course Descriptions

Understanding course descriptions:

The number following course title indicates total credit hours. For example, in case of the following course:

CS 360 Systems Programming 4 (3-3)

number 4 indicates that this is a four credit course. If there are other numbers in parenthesis following the credit hour, they indicate the total number of lecture and laboratory hours per week. In the above example, (3-3) indicates that there are 3 lecture hours and 3 laboratory hours per week.

•  Prerequisites are listed if there are courses you need to take before you enroll in a course. There are three types of prerequisites:

  1. Rec.: Recommended prerequisite
  2. Prereq.: Prerequisite course that must have been completed to take this course
  3. c//: Indicates that you may take the course at the same time you take the prerequisite

•  [M] indicates that this is a writing in the major type course. The course will require writing related to the major of the student.

•  Senior standing: In order to take this course the student must have completed at least 90 credits of course work towards the degree.

Lower-division courses in the Major

CS 121 Program Design and Development (PDF) 4 (3-3) Prereq Math 107, 201 or satisfactory math placement score. Formulation of problems and top-down design of programs in a modern structured language for their solution on a digital computer.

CS 122 Data Structures (PDF) 4 (3-3) Prereq CS 121. Advanced programming techniques: data structures, recursion, sorting and searching, and basics of algorithm analysis.

CS 214 Design of Logic Circuits (PDF) 3 (2-3) Prereq CS 121 or 251. Design and application of combinational logic circuits with exposure to modern methods and design tools; introduction to sequential logic circuits.

CS 216 Discrete Structures (PDF) 3 Prereq Math 107, Phil 201 and a programming course. Discrete mathematics, trees, graphs, elementary logic, and combinatorics with application to computer science.

CS 223 Advanced Data Structures (PDF) 3 Prereq CS 122, Math 216. Advanced data structures, object oriented programming concepts, concurrency, and program design principles.

CS 224 Programming Tools (PDF) 2 Prereq CS 122, Math 216. Debugging tools, scripting languages, UNIX programming tools, introduction to graphical user interface programming.

CS 234 Microprocessor Systems (PDF) 3 (2-3) Prereq CS 122, CS 214. Microprocessor system architecture, instruction sets, and interfacing; assembly language programming.

CS 251 C Programming Language (PDF) 2 Prereq Math 171. Comprehensive programming practice using C.

CS 253 Java Programming Language (PDF) 3 Prereq CS 121 or CS 251. Comprehensive programming practice using Java.

Upper-division courses in the Major

CS 317 Automata and Formal Languages (PDF) 3 Prereq CS 122, Math 216. Finite automata, regular sets, pushdown automata, context free language, Turing machines and the halting problem.

CS 320 [M] - Fundamentals of Software Engineering (PDF) 3 Prereq CS 224, Math 216, concurrent enrollment in Engl 402. Introduction to software engineering; requirements analysis, definition and specification; software process models; prototyping; architecture; object-oriented design with UML.

CS 330 Numerical Computing (PDF) 3 Prereq CS 121 or 251; Math 172, 220. Power and limitation of numerical solutions; design, analysis and implementation of numerical algorithms; visualization and rendering.

CS 355 Programming Language Design (PDF) 3 Prereq CS 223, 224. Design concepts of high-level programming languages; survey of existing languages; experience using some languages.

CS 360 Systems Programming (PDF) 4 (3-3) Prereq CS 223, 234. Implementation of systems programs, concepts of computer operating systems; laboratory experience in using operating system facilities.

CS 402 [M] Social and Professional Issues in Computer Science (PDF) 3 Prereq CS 121; certified in computer science; completion of University Writing Portfolio. A study of the social, legal, ethical and professional issues that arise in the context of computing.

CS 420 [M] Software Engineering in Practice (PDF) 3 Prereq CS 320. Develop software in a team environment; project management; unit and integration testing; bug tracking; configuration management; software process models; object-oriented design with UML.

CS 427 Computer Security 3 Prereq CS 360, Math 216. Computer security concepts, models and mechanisms; encryption technology, formal models, policy and ethical implications.

CS 440 Introduction to Artificial Intelligence (PDF) 3 Prereq CS 320; Math 212 or 360. Basic issues of knowledge representation and automated problem solving; introduction to the theory and application of expert systems technology.

CS 442 Computer Graphics (PDF) 3 Prereq CS 223, 224, Math 220. Raster operations; transformations and viewing; geometric modeling; visibility and shading; color. Credit not granted for both CS 442 and CS 542.

CS 443 Human-Computer Interaction (PDF) 3 Prereq junior or senior standing. Introduction to the field of human-computer interaction. Understanding the system user, user-centered design, and evaluation techniques, including heuristic evaluation and usability testing.

CS 446 Animation Programming 3 (1-4) Prereq CS 122. Introduction to computer animation programming techniques, simulation, and dynamic visualization.

CS 450 Design and Analysis of Algorithms (PDF) 3 Prereq CS 223, 317 and Stat 360. Analysis of data structures and algorithms; computational complexity and design of efficient data-handling procedures.

CS 451 Introduction to Database Systems (PDF) 3 Prereq CS 223, 224. Introduction to database concepts, data models, database languages, database design, implementation issues.

CS 452 Compiler Design 3 Prereq CS 317, 355. Design of lexical analyzers, syntactic analyzers, intermediate code generators, code optimizers and object code generators.

CS 455 Introduction to Computer Networks (PDF) 3 Prereq CS 360. Concepts and implementation of computer networks; architectures, protocol layers, internetworking and addressing case studies.

CS 460 Operating Systems and Computer Architecture (PDF) 3 Prereq CS 360. Operating systems, computer architectures, and their interrelationships in micro, mini and large computer systems.

CS 464 Distributed Systems Concepts and Programming 3 Prereq CS 360. Concepts of distributed systems; naming, security, networking, replication, synchronization, quality of service; programming middleware including CORBA, XML, DCOM/SOAP. Credit not granted for both CS 464 and CS 564.

CS 466 Embedded Systems (PDF) 3 (2-3) Prereq CS 360. The design and development of real-time and dedicated software systems with an introduction to sensors and actuators.

CS 471 Professional Programming Problems and Practice (PDF) 3 Prereq CS 320; CS 360; senior standing. Application of OOP techniques to a variety of challanging, real world problems. Industrial program development processes, peer reviews and inter-personal skills are presented and exercised.

CS 483 Topics in Computer Science Variable 1-4. May be repeated for credit. Prereq CS 320. Current topics in computer science or software engineering.

CS 490 Work Study Internship Variable 1-9. May be repeated for credit. Prereq CS 224, 234. CS major. By interview only. Experience in programming and systems analysis in a working environment under supervision of industrial or governmental professionals and faculty. S, F grading.

CS 499 Special Problems Variable 1-4. May be repeated for credit. By interview only. S, F grading.