Computer Science (CS)

Subject Number Title Hours Catalog Description General Education Category
CS 100 Discovering Computer Science 3 hours. Fundamentals of computing; history of computation; computer organization; program design, testing and debugging; web design; computer animation; software tools; societal and legal issues in computing. Credit is not given for CS 100 if the student has credit in either CS 101 or MCS 260. No graduation credit for students enrolled in a major offered by the Departments of Computer Science or Electrical and Computer Engineering. Extensive computer use required.  Natural World - No Lab course.
CS 101 Introduction to Computing 3 hours. Introduction to computing resources and tools. Computer access, security, and responsibility. Navigation and communication. Networks; Internet resources. Applications. Programming languages, concepts and practice. Programming exercises. Previously listed as EECS 101. 
CS 102 Introduction to Programming 3 hours. Programming languages and program design; data types and operators, expressions, control structures, procedures and modularity. Language definition and programming laboratory. Previously listed as EECS 171. Prerequisite(s): CS 101 and credit or concurrent registration in MATH 180 or consent of the instructor. 
CS 107 Introduction to Computing and Programming 4 hours. Access and use of computing resources. Programming and program design. Problem solving. Data types, control structures, modularity, information hiding. Credit is not given for CS 107 if the student has credit for CS 102. Previously listed as EECS 171. Prerequisite(s): Credit or concurrent registration in MATH 180. 
CS 108 Fortran Programming for Engineers with MatLab 3 hours. Program design using Fortran: data types and operators, control structures, subprograms, file I/O, common storage. Engineering applications: matrices, equation solutions, MetLab environment. Programming assignments. Extensive computer use required. Prerequisite(s): Credit or concurrent registration in MATH 180. 
CS 109 C/C ++ Programming for Engineers with MatLab 3 hours. Program design using C/C++:  Data types and operators, control structures, functions, file I/O, arrays and structures.  Engineering applications:  Matrices, equation solution, MatLab. Programming assignments.   Extensive computer use required.  Prerequisite(s):  Credit or concurrent registration in MATH 180.  
CS 201 Data Structures and Discrete Mathematics I 4 hours. Lists, stacks, queues, sets, hash tables, introduction to trees and graphs. Algorithm correctness and complexity, inductive proofs, logic. Programming projects. Previously listed as EECS 260. Credit is not given for CS 201 if the student has credit for MCS 261. Prerequisite(s): MATH 180; and grade of C or better in CS 102 or grade of C or better in CS 107. 
CS 202 Data Structures and Discrete Mathematics II 3 hours. Combinatorics; complex data structures: trees, heaps, and graphs. Sorting and searching algorithms. Programming projects. Previously listed as EECS 360.  Prerequisite(s): Grade of C or better in CS 201. 
CS 266 Computer Architecture I: Logic and Computer Structures 4 hours. Architecture from gate level up. Combinational and sequential logic. Logical minimization. Integer number systems, arithmetic. Datapath design. Finite state machines. Register-based architecture. Memory technologies. Credit is not given for CS 266 if the student has credit in any of the following: EECS 265 or EECS 365 or EECS 366 or ECE 265 or ECE 267 or ECE 366. Prerequisite(s): CS 102. 
CS 301 Languages and Automata 3 hours. Regular sets and finite automata. Context-free languages and push-down automata. Parsing. Computability theory including Turing machines and decidability. Previously listed as EECS 361. Prerequisite(s): Grade of C or better in CS 201; and credit or concurrent registration in CS 202. 
CS 335 Computer Ethics 2 hours. Ethical, societal and environmental issues for computer professionals. Professional ethics, software ownership, unreliability, responsibility, privacy, computer crime, veracity, expert systems, workplace and health issues. Previously listed as EECS 375. Prerequisite(s): CS 202. 
CS 340 Software Design 4 hours. Programming language semantics, scope, overloading, data abstraction, constructors. Procedural and object-oriented design, programming tools and environments. Interactive application structure and interface, windows, events, widgets. Previously listed as EECS 370. Prerequisite(s): CS 202. 
CS 366 Computer Architecture II: Hardware-Software Interface 4 hours. A continuation of CS 266. Control-unit and I/O design; assembly language and machine programming; hardware control and I/O; memory hierarchy and caching. Credit is not given for CS 366 if the student has credit for any of the following: EECS 265 or EECS 365 or EECS 366 or ECE 265 or ECE 267 or ECE 366. Prerequisite(s): CS 266. 
CS 376 Practicum in Computer Science Presentations 1 hours. Techniques for effective presentation of computer science topics: terminology, organization, visual aides and delivery of technical talks; presentations and presentation evaluation required. Prerequisite(s): ENGL 161 and CS 102. 
CS 385 Operating Systems Concepts and Design 4 hours. Operating systems issues,operations. Process execution, scheduling; memory management, virtual memory design; concurrent process coordination, properties: deadlock,mutual exclusion synchronization primitives;distributed systems issues; network design. Previously listed as EECS 371.  Prerequisite(s): CS 201; and CS 366 or ECE 267. 
CS 398 Undergraduate Design/Research 3 hours. Design and/or research experience for undergraduate Computer Science majors under close supervision of a CS faculty member. Previously listed as EECS 398. Prerequisite(s): Consent of the instructor. 
CS 401 Computer Algorithms I 3 OR 4 hours. Design and analysis of computer algorithms. Divide-and-conquer, dynamic programming, greedy method, backtracking. Algorithms for sorting, searching, graph computations, pattern matching, NP-complete problems. Same as MCS 401. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in MCS 360; or grade of C or better in CS 202.
CS 411 Artificial Intelligence I 3 OR 4 hours. Problem representation; rule-based problem-solving methods; heuristic search techniques. Application to expert systems, theorem proving, language understanding. Individual projects. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 484. Prerequisite(s): CS 202. 
CS 415 Computer Vision I 3 OR 4 hours. Computer vision system design. Segmentation and representation of regions and boundaries; image filtering; object recognition; advanced topics (examples: texture, stereo, color); applications. Programming assignments. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 487. Prerequisite(s): CS 202 or MCS 360; or consent of the instructor. 
CS 421 Natural Language Processing 3 OR 4 hours. Design of natural language processing systems; part-of speech tagging, statistical and symbolic parsers; semantic interpretation; discourse and dialogue processing; natural language generation; applications. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 301 or MCS 441. 
CS 422 User Interface Design and Programming 3 OR 4 hours. User interface design, implementation, and evaluation: user-centered design methodologies, windowing systems, I/O devices and techniques, event-loop programming, user studies. Programming projects. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 478. Prerequisite(s): CS 340. 
CS 424 Visualization and Visual Analytics 3 OR 4 hours. Geospatial visualization, scientific visualization, medical visualization, information visualization, and social network visualization, interaction, data analysis, human factors, dynamic data, privacy, uncertainty, data transforms. 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): CS 201 or graduate standing; or consent of the instructor.
CS 426 Video Game Design and Development 3 OR 4 hours. Theory and practice of video game design and programming. Students will form interdisciplinary teams, to design, build and demonstrate video games or related interactive simulation environments. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 107 and CS 201 and CS 488; or consent of the instructor.
CS 440 Software Engineering I 3 OR 4 hours. Software life-cycle model, requirement specification techniques, large-scale software design techniques and tools, implementation issues, testing and debugging techniques, software maintenance. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 470. Prerequisite(s): CS 340. 
CS 441 Distributed Object Programming Using Middleware 3 OR 4 hours. Design and implementation of distributed object programs using middleware software standards; interface definition languages and programming language mappings; static and dynamic object communication mechanisms. 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): CS 340 and CS 385. 
CS 442 Software Engineering II 3 OR 4 hours. Advanced concepts in software development: requirements engineering, cost estimation, risk analysis, extreme programming, regression test case selection, and design patterns.  Software lab assignments required.   3 undergraduate hours.  4 graduate hours.  Extensive computer use required.  Prerequisite(s):  CS 440.
CS 450 Introduction to Networking 3 OR 4 hours. Network protocols, algorithms, and software issues. Topics include the Open Systems Interconnect model, data link, network and transport layers, TCP/IP, ATM, mobile networks. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 433. Credit is not given for CS 450 if the student has credit for ECE 433. Prerequisite(s): CS 202 and CS 385; and STAT 381 or STAT 401 or IE 342. 
CS 455 Design and Implementation of Network Protocols 3 OR 4 hours. Network protocols and their software, Examines OS network interface through network layers. Topics include routing, congestion control, fault tolerance, security, name servers, multicast, and performance. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 340 and CS 450. 
CS 466 Advanced Computer Architecture 3 OR 4 hours. Design and analysis of high performance uniprocessors. Topics include arithmetic: multiplication, division, shifting; processor: pipelining, multiple function units. instruction sets; memory: caches, modules; virtual machines. Same as ECE 466. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): ECE 366 or CS 366.
CS 469 Computer Systems Design 3 OR 4 hours. Analysis and modeling of digital systems; hardware description languages; CAD tools for simulation, synthesis, and verification of computer systems. Project: a simple processor design. 3 undergraduate hours. 4 graduate hours. Same as ECE 469. Prerequisite(s): CS 366; or ECE 366 and ECE 368.
CS 473 Compiler Design 3 OR 4 hours. Language translation: lexical analysis, parsing schemes, symbol table management, syntax and semantic error detection, and code generation. Development of fully-functional compiler. Same as MCS 411. 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Grade of C or better in CS 301 or grade of C or better in MCS 441; and grade of C or better in CS 202 or grade of C or better in MCS 360; and grade of C or better in CS 266. 
CS 474 Object-Oriented Languages and Environments 3 OR 4 hours. Data abstraction, classes and objects, messages and methods, polymorphism and dynamic binding, inheritance. Object-oriented design. Pure and hybrid object-oriented languages. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 474. Prerequisite(s): CS 340. 
CS 475 Object-Oriented Programming 3 OR 4 hours. OO Paradigm: classes, messages, methods, variables, inheritance, polymorphism; the C++ and Java languages; programming labs required. 3 undergraduate hours. 4 graduate hours. Credit is not given for CS 475 if the student has credit for CS 340 or CS 474. Extensive computer use required. Prerequisite(s): CS 202; and consent of the instructor. 
CS 476 Programming Language Design 3 OR 4 hours. Definition, design, and implementation of programming languages. Syntactic and semantic description; variable bindings, control and data structures, parsing, code generation, optimization; exception handling; data abstraction. Same as MCS 415. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 476. Prerequisite(s): MCS 360 or CS 340. 
CS 480 Database Systems 3 OR 4 hours. Database design, logical design, physical design. Relational databases. Recovery, concurrency control. Normalization. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 480. Prerequisite(s): CS 202. 
CS 485 Networked Operating Systems Programming 4 OR 5 hours. Concepts, design, and programming of multi-process and distributed systems; inter-process communications; fault tolerance; distributed programming semantics. Programming assignments and project required. 4 undergraduate hours. 5 graduate hours. Previously listed as EECS 471. Prerequisite(s): CS 385. 
CS 487 Building Secure Computer Systems 3 OR 4 hours. Building and programming secure systems; protecting systems from threats and reduction of vulnerabilities; Includes application, host and network security. 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 385; and senior standing or above; or consent of the instructor.
CS 488 Computer Graphics I 0 TO 4 hours. Principles of interactive computer graphics. Raster and vector display, techniques and hardware considerations. Introduction to two-dimensional and three dimensional rendering. Laboratory. Same as AD 488. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 488. Prerequisite(s): Credit or concurrent registration in CS 340. 
CS 491 Seminar 1 TO 4 hours. Topics of mutual interest to a faculty member and a group of students. Offered as announced by department bulletin or the Timetable. May be repeated. Previously listed as EECS 491. Prerequisite(s): Consent of the instructor. 
CS 493 Special Problems 2 TO 4 hours. Special problems or reading by special arrangement with the faculty. Previously listed as EECS 493. No graduate credit for Computer Science majors. Prerequisite(s): Consent of the instructor. 
CS 499 Professional Development Seminar 0 hours. Graduating seniors will be provided with information regarding future career paths and will provide information regarding the program to be used for assessment purposes. Students take the CS Major Field Exam as part of this course. Satisfactory/Unsatisfactory grading only. Prerequisite(s): Open only to seniors; and approval of the department. Must be taken in the student's last semester of study.