Computer Science

The Department of Computer Science offers graduate programs leading to Computer Science degrees at the master’s and doctoral levels. The department offers a comprehensive range of courses in the field of computer science. Special emphases lie in the areas of artificial intelligence, computational biology, databases, data science, graphics and human-computer interaction, networks, security, software engineering, theoretical computer science, virtual reality, and visualization. Consult the CS Graduate Student Manual for current requirements, policies, and regulations. Updated information about the faculty, staff, curriculum, and courses is found on the CS website http://www.cs.uic.edu.

The department maintains and provides full-time technical staff for several specialized research laboratories, many housed in the Engineering Research Facility. The laboratories contain over 300 workstations and servers and an extensive array of computer-based multimedia equipment. All departmental computing facilities are networked to general university computing resources and national networks, which permits high-speed access to such facilities.

Admission and Degree Requirements

Courses

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. Course Information: 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. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 251.

CS 412. Introduction to Machine Learning. 3 or 4 hours.

Theory and implementation of systems that improve automatically based on past experience, including classification, density estimation, clustering, and online learning tasks and solutions. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. MATLAB will be used for some of the homework assignments, but prior experience with it is not required. Prerequisite(s): CS 251; and IE 342 or STAT 381; or consent of the instructor.

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. Course Information: 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. Course Information: 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. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 342.

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. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): CS 251; or graduate standing; or consent of the instructor.

CS 425. Computer Graphics I. 0-4 hours.

Principles of interactive computer graphics. Raster and vector display, techniques and hardware considerations. Introduction to two-dimensional and three dimensional rendering. Course Information: 3 undergraduate hours. 4 graduate hours. Previously listed as CS 488. Extensive computer use required. Prerequisite(s): CS 251. Class Schedule Information: To be properly registered, students must enroll in one Laboratory-Discussion and one Lecture-Discussion.

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. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 251 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. Course Information: 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 470. Prerequisite(s): CS 342.

CS 441. Engineering Distributed Objects For Cloud Computing. 3 or 4 hours.

Provides a broad but solid overview of engineering distributed object for cloud computing. Students will learn the theory and principles of engineering distributed objects for cloud environments. Programming assignments required. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Grade of C or better in CS 341 or Grade of C or better in CS 342; and Grade of C or better in CS 361.

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. Course Information: 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. Course Information: 3 undergraduate hours. 4 graduate hours. Credit is not given for CS 450 if the student has credit for ECE 433. Prerequisite(s): CS 361.

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. Course Information: 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. Course Information: 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. Course Information: 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. Course Information: 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 251 or Grade of C or better in MCS 360; and Grade of C or better in CS 261.

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. Course Information: 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 474. Prerequisite(s): CS 342.

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. Course Information: 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. Course Information: Same as MCS 415. 3 undergraduate hours. 4 graduate hours. Previously listed as EECS 476. Prerequisite(s): MCS 360; or CS 341.

CS 477. Public Policy, Legal, and Ethical Issues in Computing, Privacy, and Security. 3 or 4 hours.

Contemporary topics involving legal, public policy, and/or ethical issues in computing, especially privacy, security, and surveillance. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): Consent of the instructor.

CS 478. Software Development for Mobile Platforms. 3 or 4 hours.

Design and implementation of mobile applications; operating systems, object-oriented languages and programming environments for mobile platforms; integration with hardware components; and location-aware applications. Programming assignments required. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): CS 342.

CS 480. Database Systems. 3 or 4 hours.

Database design, logical design, physical design. Relational databases. Recovery, concurrency control. Normalization. Course Information: 3 undergraduate hours. 4 graduate hours. Prerequisite(s): CS 251.

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. Course Information: 4 undergraduate hours. 5 graduate hours. Previously listed as EECS 471. Prerequisite(s): CS 385.

CS 486. Secure Operating System Design and Implementation. 3 or 4 hours.

Design of operating systems; operating system kernel implementation; secure coding and systems; virtual machines; extensive programming in a systems language such as C. Course Information: 3 undergraduate hours. 4 graduate hours. Extensive computer use required. Prerequisite(s): Credit or concurrent registration in CS 385; and credit or concurrent registration in CS 450 or consent of the instructor.

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. Course Information: 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 489. Human Augmentics. 3 or 4 hours.

Study of technologies for augmentation of human capabilities; human limitations; implants and wearable technologies; implants; brain-computer interfaces; exoskeletons; sensors and networks. Includes project work. Course Information: Extensive computer use required. Prerequisite(s): Senior standing or above; or consent of the instructor; or senior majoring in communications or psychology.

CS 491. Seminar. 1-4 hours.

Topics of mutual interest to a faculty member and a group of students. Offered as announced by department bulletin or the Timetable. Course Information: May be repeated. Previously listed as EECS 491. Prerequisite(s): Consent of the instructor.

CS 493. Special Problems. 2-4 hours.

Special problems or reading by special arrangement with the faculty. Course Information: 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. Course Information: 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.

CS 501. Computer Algorithms II. 4 hours.

Continuation of MCS 401 (same as CS 401). Advanced topics in algorithms. Lower bounds. Union-find problems. Fast Fourier transform. Complexity of arithmetic, polynomial, and matrix calculations. Approximation algorithms. Parallel algorithms. Course Information: Same as MCS 501. Prerequisite(s): MCS 401 or CS 401.

CS 502. Design and Analysis of Efficient Algorithms in Computational Molecular Biology. 4 hours.

Design and analysis of efficient algorithms for computational problems in molecular biology such as genome sequencing and construction of evolutionary trees. Course Information: Prerequisite(s): Grade of B or better in CS 401; or consent of the instructor. Recommended background: CS 501 and some exposure to basic chemistry and biology.

CS 503. Applied Graph Theory. 4 hours.

Paths, circuits, trees, cutsets, planarity, duarity, matrices and vector space of graphs, directed graphs, coloring, covering, matching and applications to switching networks and computer science. Course Information: Previously listed as EECS 563. Prerequisite(s): Consent of the instructor.

CS 505. Computability and Complexity Theory. 4 hours.

Turing machines, undecidability, Rice's theorem, recursively enumerable sets, complexity theory, hierarchy theorems, alternation, parallel complexity classes, complete problems. Course Information: Previously listed as EECS 561. Prerequisite(s): CS 301.

CS 510. Introduction to Cognitive Science. 3 hours.

The computer modeling of intelligent agents and systems. Course Information: Same as PSCH 510. Extensive computer use required. Prior experience with computers is expected to vary widely among the students, and the instruction, readings, and course project are designed to take this into account. Prerequisite(s): Consent of the instructor. Recommended background: Prior training and/or prior coursework in human cognition and/or computer programming.

CS 511. Artificial Intelligence II. 4 hours.

Predicate logic and resolution strategies, reasoning under uncertainty, incomplete information reasoning, state and change, planning, temporal reasoning knowledge representation, learning, advanced search techniques and current topics. Course Information: Previously listed as EECS 584. Prerequisite(s): CS 411.

CS 514. Applied Artificial Intelligence. 4 hours.

Anatomy of applied AI systems, rule-based expert systems and their theoretical foundation, fuzzy logic with applications, Bayesian networks and automated probabilistic reasoning, influence diagrams and automated optimal decision-making, and neural networks. Course Information: Previously listed as EECS 585. Prerequisite(s): CS 411.

CS 515. Advanced Computer Vision. 4 hours.

Analysis of 3-D scene images. Shape from shading, texture, line drawings, and surface orientation. Surface representation methods and reconstruction of 3-D scenes. Design of knowledge-based vision systems and 3-D applications. Course Information: Previously listed as EECS 587. Prerequisite(s): CS 415.

CS 521. Statistical Natural Language Processing. 4 hours.

Statistical techniques for Natural Language Processing, including maximum likelihood estimation, Hidden Markov Models, and probabilistic grammars; and their applications, including parsing, semantic inference, dialogue processing and summarization. Course Information: Prerequisite(s): CS 421; or consent of the instructor.

CS 522. Human-Computer Interaction. 4 hours.

The computer-user interface: media, languages, interaction techniques, user modeling. Human factors in software development. Theory, experimental methods, evaluation, tools. Project required. Course Information: Previously listed as EECS 578. Prerequisite(s): CS 422.

CS 523. Multi-Media Systems. 4 hours.

Principles of multi-media interface design for computer applications. Multi-disciplinary approaches to integrating text, still images, animation, and sound into human-computer interfaces. Course Information: Previously listed as EECS 579. Prerequisite(s): CS 422; or consent of the instructor.

CS 524. Visualization and Visual Analytics II. 4 hours.

Current topics in scientific visualization, medical visualization, information visualization, volume rendering, isosurfaces. Course Information: Extensive computer use required. Prerequisite(s): CS 424 or CS 488; and graduate standing; or consent of the instructor.

CS 525. Advanced Graphics Processor Programming. 4 hours.

Graphics Processing Unit (GPU) Programming languages, vertex shaders, fragment shaders, general purpose computing on GPUs. Course Information: Prerequisite(s): CS 488; or graduate standing; and consent of the instructor. Class Schedule Information: Extensive computer use required.

CS 526. Computer Graphics II. 4 hours.

State of the art in computer graphics, visualization and interactive techniques. Course Information: Same as AD 588. Prerequisite(s): CS 488; or consent of the instructor. Class Schedule Information: To be properly registered, students must enroll in one Laboratory and one Lecture-Discussion.

CS 527. Computer Animation. 4 hours.

Theoretical and practical aspects of computer animation: keyframing, kinematics, simulation, and motion capture. Course Information: Laboratory required. Prerequisite(s): CS 488; or consent of the instructor. Class Schedule Information: To be properly registered, students must enroll in one Laboratory and one Lecture-Discussion.

CS 528. Virtual Reality. 4 hours.

Principles of virtual reality and virtual environments: hardware, software, input and control devices, design issues, and quantitative assessment of user performance. Course Information: Prerequisite(s): CS 488 or consent of the instructor.

CS 540. Advanced Topics in Software Engineering. 4 hours.

Formal methods; requirements and specification languages; program flow analysis; validation and verification; software metrics; program representations; software tools; software testing; software process. Course Information: Previously listed as EECS 570. Prerequisite(s): CS 440; or consent of the instructor.

CS 541. Software Engineering Environments. 4 hours.

Software configuration management; software quality assurance; software engineering economics; software factory; software reuse; computer aided software engineering; software prototyping. Course Information: Previously listed as EECS 571. Prerequisite(s): CS 540; or consent of the instructor.

CS 542. Distributed Software Engineering. 4 hours.

Fundamental concepts of distributed software. Task allocation algorithms, language concepts for concurrency and communication, analysis methods and tools, and formal models. Course Information: Previously listed as EECS 572. Prerequisite(s): CS 440.

CS 545. Formal Methods In Concurrent and Distributed Systems. 4 hours.

Formal methods in concurrent and distributed systems, particularly temporal logic and automata for specifying and reasoning real-time properties. Automated and manual techniques for checking correctness. Course Information: Previously listed as EECS 575. Prerequisite(s): Consent of the instructor.

CS 553. Distributed Computing Systems. 4 hours.

Distributed Computing systems terminology and design issues. Data communications protocols; distributed operating systems, resource management, and synchronization; security; database systems. Course Information: Previously listed as EECS 573. Prerequisite(s): CS 366 and CS 385.

CS 554. Advanced Topics in Concurrent Computing Systems. 4 hours.

Petri nets, methods and their applications to concurrent, distributed, parallel, and data-flow systems; and logic programming and rule-based systems. Course Information: Previously listed as EECS 564. Prerequisite(s): Consent of the instructor.

CS 559. Neural Networks. 4 hours.

Artificial neural networks, perceptron, backpropagation, Kohonen nets, statistical methods, Hopfield nets, associative memories, large memory networks, cognition. Course Information: Same as ECE 559. Prerequisite(s): Consent of the instructor.

CS 560. Fuzzy Logic. 4 hours.

Crisp and fuzzy sets; membership functions; fuzzy operations; fuzzy relations and their solution; approximate reasoning; fuzzy modeling and programming; applications; project. Course Information: Previously listed as EECS 560. Prerequisite(s): Consent of the instructor.

CS 565. Physical Design Automation. 4 hours.

Computer-aided physical design of integrated circuits; circuit partitioning and placement; floorplanning; global and detailed routing; timing optimization; general optimization tools: local search, constraint relaxation. Course Information: Same as ECE 565. Prerequisite(s): CS 401; and CS 466 or ECE 465.

CS 566. Parallel Processing. 4 hours.

Parallel processing from the computer science perspective. Includes Architecture (bus based, lockstep, SIMD), Programming Languages (Functional, traditional and extensions), compilers, interconnection networks, and algorithms. Course Information: Same as ECE 566. Prerequisite(s): CS 466 or ECE 466; and CS 401.

CS 567. Principles of Computational Transportation Science. 4 hours.

Builds on the fundamentals of transportation science and emphasizes its high-level computational aspects. Topics covered include database design and theory, spatial and temporal information systems issues and travel modeling. Course Information: Same as CME 567 and UPP 567. Prerequisite(s): Grade of B or better or concurrent registration in UPP 560. Open only to Ph.D. students; or consent of the instructor.

CS 569. High-Performance Processors and Systems. 4 hours.

Instruction-level parallelism, multiple-instruction issue, branch prediction, instruction and data prefetching, novel cache and DRAM organization, high-performance interconnect, compilation issues, case studies. Course Information: Same as ECE 569. Prerequisite(s): CS 466 or ECE 466; and graduate standing.

CS 577. Object Stores. 4 hours.

Use, design, and implementation of object stores. An object store enables object-oriented programming to be extended by storing objects on disk and communicating objects between processes. Course Information: Previously listed as EECS 577. Prerequisite(s): CS 385 and CS 480; and knowledge of C++, or consent of the instructor.

CS 580. Query Processing in Database Systems. 4 hours.

Query processing in deductive databases and in distributed/parallel databases systems. Course Information: Same as IDS 511. Previously listed as EECS 580. Prerequisite(s): CS 480.

CS 581. Database Management Systems. 4 hours.

Concurrency control; reliability, recovery, data integrity, database machines and current topics. Course Information: Previously listed as EECS 581. Prerequisite(s): CS 480.

CS 582. Information Retrieval. 4 hours.

Document retrieval, office automation. Optimal retrieval, relevance feedback, clustered search, construction of clusters, model of term weighting, thesaurus construction, multimedia data, handling of audio and video. Course Information: Previously listed as EECS 582. Prerequisite(s): CS 480.

CS 583. Data Mining and Text Mining. 4 hours.

Provide students with a sound knowledge in data and text mining tasks and techniques, as well as, ensure students ability to use this technology. Course Information: Prerequisite(s): CS 401. Recommended background: Algorithm Probability.

CS 584. Advanced Data Mining. 4 hours.

Data stream mining - including stream clustering, classification and frequent pattern mining. And, relation/link/graph mining - including frequent subgraphs, relational clustering and classification. Course Information: Prerequisite(s): CS 583 and graduate standing; or consent of the instructor.

CS 586. Data and Web Semantics. 4 hours.

Data modeling and semantics; knowledge representation, querying, and reasoning for the semantic web; metadata; data integration and interoperation; web services; applications. Course Information: Extensive computer use required. Prerequisite(s): CS 480 or equivalent.

CS 587. Computer Systems Security. 4 hours.

Security policies; security properties; protection mechanisms for single systems, networked systems, and distributed computing; trust; attacks on computer systems. Course Information: Extensive computer use required. Prerequisite(s): CS 485 or CS 450; or consent of the instructor.

CS 588. Security and Privacy in Networked and Distributed Systems. 4 hours.

Introduction to cryptographic principles; network authentication; confidentiality; integrity; distributed denial of service; certificates and distributed architectures for security; multiorganization trust; privacy, anonymity in distributed systems. Course Information: Prerequisite(s): CS 401; and CS 450 or CS 485; or consent of the instructor.

CS 590. Research Methods in Computer Science. 4 hours.

Introduces a variety of issues pertaining to doing research in computer science: exposure to methods in different areas of computer science; bibliographic search; producing research papers and oral presentations; evaluating the work of others; ethics. Course Information: Satisfactory/Unsatisfactory grading only. Prerequisite(s): Open only to Ph.D. degree students; and consent of the instructor.

CS 594. Special Topics. 4 hours.

Subject matter varies from term to term and section to section, depending on the specialities of the instructor. Course Information: May be repeated. Students may register in more than one section per term. Previously listed as EECS 594. Prerequisite(s): Consent of the instructor.

CS 595. Departmental Seminar. 0 hours.

Seminar by faculty and invited speakers. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. Previously listed as EECS 595.

CS 596. Individual Study. 1-4 hours.

Individual study or research under close supervision of a faculty member. Course Information: May be repeated. Students may register in more than one section per term. No graduation credit for students in the following: MS in Computer Science or PhD in Computer Science. Previously listed as EECS 596. Prerequisite(s): Consent of the instructor. For Computer Science majors only.

CS 597. Project Research. 0-9 hours.

A research design or reading project approved by the committee appointed by the director of graduate studies. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Previously listed as EECS 597. Prerequisite(s): Consent of the instructor. For CS majors only.

CS 598. M.S. Thesis Research. 0-16 hours.

M.S. thesis work under the supervision of a graduate advisor. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Previously listed as EECS 598. Prerequisite(s): Consent of the instructor. For CS majors only.

CS 599. Ph.D. Thesis Research. 0-16 hours.

Ph.D. thesis work under supervision of a graduate advisor. Course Information: Satisfactory/Unsatisfactory grading only. May be repeated. Students may register in more than one section per term. Previously listed as EECS 599. Prerequisite(s): Consent of the instructor. For CS students only.