Computer Science 1
COMPUTER SCIENCE
Stuart Building, Room 235
10 W. 31st St.
Chicago, IL 60616
312.567.5150
[email protected]
iit.edu/computer-science
Chair
Mustafa Bilgic
Faculty with Research Interests
For information regarding faculty visit the University Directory and Computer Science Research Areas.
Computers have changed, and continue to change, what we do and how we do it in our homes, in our offices, and throughout our world.
The discipline of computer science focuses upon the many challenging problems encountered in the development and use of computing
systems and software. Areas of study in computer science range from theoretical analyses into the nature of computing and computing
algorithms, to the development of powerful computing devices and networks, and from the design and implementation of sophisticated
software systems, to the creation and use of machine learning systems that exhibit powerful artificial intelligence.
The department offers two undergraduate programs in core computer science: a Bachelor of Science (B.S.) in Computer Science and
Bachelor of Science (B.S.) in Computer Information Systems; and a Bachelor of Science (B.S.) in Artificial Intelligence, and a Bachelor of
Science (B.S.) in Data Science (in conjunction with the Applied Mathematics Department).
Both core computer science programs provide an excellent background in the field and allow for ample study in other areas. Where these
programs differ is in the approach they take to computer science. The B.S. in Computer Science provides an in-depth experience focusing on
the theory and practice of computer science while the B.S. in Computer Information Systems provides a more interdisciplinary experience,
balancing study in computer science with study in another field. Both programs begin with a set of introductory courses that work together
to provide students with a firm foundation in computer science. These introductory courses include regular labs wherein students analyze
and solve a variety of problems using accepted software development techniques. Having completed the introductory core, a student is
prepared to work independently within a well-structured design and coding paradigm in the classroom or on the job.
The last two years of study build upon this foundation. The B.S. in Computer Science focuses on the concepts and techniques used in
the design and development of advanced software systems. Students in this program explore the conceptual underpinnings of computer
science—its fundamental algorithms, programming languages, database systems, operating systems, and software engineering techniques.
In addition, students choose from a rich set of electives including artificial intelligence, machine learning, biometrics, cloud computing,
data mining, natural language processing, computer vision, computer graphics, information retrieval, information security, intelligent text
analysis, knowledge management systems, and mobile application development, among others. As with the introductory sequence, these
advanced courses stress “hands-on" learning by doing. Students can opt to complete one of the computer science specializations: data
science, distributed and cloud computing, information security, or information and knowledge management systems. An allotment of free
electives allows students to combine study in computer science with study in another field to complete a minor.
The B.S. in Computer Information Systems program emphasizes the use of computing for complex problem solving. Students in this
program pursue an interdisciplinary course of study that combines a solid foundation in computer science with a focus in another discipline.
This program is designed for students who seek to blend their computer science abilities with skills specific to another domain to solve
problems in that domain. Examples include computing with a business focus (e.g., management information systems) or computing with a
natural science focus (e.g., computational physics).
The B.S. in Artificial Intelligence (AI), one of the first degrees of its kind in the country, gives students the broad and deep foundations
necessary to build computational systems that can interpret sensory input, learn from experience, understand human language, plan ahead,
and support intelligent decision making. The program starts with introductory courses in programming, computer science, mathematics,
and statistics that provide students with a firm technical foundation. Students are then prepared to learn core AI concepts and techniques
including state-space search, game-playing, machine learning, neural networks, planning, computer vision, and language understanding.
For breadth of understanding necessary in this interdisciplinary field, students choose from a diverse set of advanced courses in cognitive
science, philosophy of mind, and linguistics, and also must complete a minor in another area. Given the societal impact of AI, emphasis is
placed on ethics and social responsibility throughout the coursework. The program also includes a large variety of advanced AI electives to
enable students to develop technical mastery in specific sub-fields.
The B.S. in Data Science gives students the analytical and computational skills needed to support decision making and operations in diverse
industries. As such, this profession is in very high demand. In this multidisciplinary major students learn core computing, mathematics,
and statistics concepts and techniques, and are trained in modern methodologies for data collection, organization, and analysis. Ethics
2 Computer Science
and professional skills training are also integrated throughout the program, so graduates are prepared from day one to be successful data
science professionals.
The mission statement for the Department of Computer Science may be found on the Department of Computer Science website.
Degree Programs
• Bachelor of Science in Artificial Intelligence
• Bachelor of Science in Computer Information Systems
• Bachelor of Science in Computer Science
• Bachelor of Science in Data Science (with Applied Mathematics)
Co-Terminal Options
The Department of Computer Science also offers the following co-terminal degrees, which enables a student to simultaneously complete
both an undergraduate and graduate degree in as few as five years:
• Bachelor of Science in Applied Mathematics/Master of Computer Science
• Bachelor of Science in Applied Mathematics/Master of Science in Computer Science
• Bachelor of Science in Artificial Intelligence/Master of Artificial Intelligence
• Bachelor of Science in Artificial Intelligence/Master of Computer Science
• Bachelor of Science in Artificial Intelligence/Master of Cybersecurity
• Bachelor of Science in Artificial Intelligence/Master of Data Science
• Bachelor of Science in Artificial Intelligence/Master of Science in Computer Science
• Bachelor of Science in Artificial Intelligence/Master of Science in Computational Decision Sciences and Operations Research
• Bachelor of Science in Biology/Master of Computer Science
• Bachelor of Science in Biology/Master of Science in Computer Science
• Bachelor of Science in Computer Engineering/Master of Computer Science
• Bachelor of Science in Computer Engineering/Master of Science in Computer Science
• Bachelor of Science in Computer Science/Master of Artificial Intelligence
• Bachelor of Science in Computer Science/Master of Computer Science
• Bachelor of Science in Computer Science/Master of Cybersecurity
• Bachelor of Science in Computer Science/Master of Data Science
• Bachelor of Science in Computer Science/Master of Science in Applied Mathematics
• Bachelor of Science in Computer Science/Master of Science in Computer Science
• Bachelor of Science in Computer Science/Master of Science in Computational Decision Sciences and Operations Research
• Bachelor of Science in Computer Science/Master of Intellectual Property Management and Markets
• Bachelor of Science in Physics/Master of Computer Science
• Bachelor of Science in Physics/Master of Science in Computer Science
These co-terminal degrees allow students to gain greater knowledge in specialized areas while, in most cases, completing a smaller
number of credit hours with increased scheduling flexibility. For more information, please visit the Department of Computer Science
website (science.iit.edu/computer-science).
Minors
• Minor in Artificial Intelligence
• Minor in Computational Structures
• Minor in Computer Architecture
• Minor in Computer Networking
• Minor in Computer Science
• Minor in Database Management
• Minor in Operating Systems
• Minor in Programming Languages
• Minor in Software Engineering
Computer Science 3
Certificate
• Certificate in Foundations of Computer Science
4 Computer Science
CS 116
Course Descriptions Object-Oriented Programming II
Introduces more advanced elements of object-oriented
CS 100
programming, including dynamic data structures, recursion,
Introduction to the Profession
searching and sorting, and advanced object-oriented programming
An introduction to science and engineering as a profession.
techniques. For students in CS and CS-related degree programs.
Examines the problem-solving process used in engineering and
Prerequisite(s): CS 115 with min. grade of C
science. Emphasizes the interdisciplinary and international nature
Lecture: 2 Lab: 1 Credits: 2
of problem-solving and the need to evaluate solutions in terms of a
Satisfies: Communications (C), Computing (COMP)
variety of constraints: computational, financial, and social.
Lecture: 1 Lab: 2 Credits: 2
CS 201
Satisfies: Communications (C)
Accelerated Introduction to Computer Science
Problem-solving and design using an object-oriented programming
CS 104
language. Introduces a variety of problem-solving techniques,
Introduction to Computer Programming for Engineers
algorithms, and data structures in object-oriented programming.
Introduces the use of high-level programming language as a
Prerequisite(s): CS 104 with min. grade of C or CS 105 with min.
problem-solving tool in engineering including basic data structures
grade of C or CS 110 with min. grade of C or CS 115 with min. grade
and algorithms, structured programming techniques, and software
of C or Graduate standing
documentation. Designed for students who have had little or no prior
Lecture: 3 Lab: 2 Credits: 4
experience with computer programming. Students should only take
Satisfies: Communications (C), Computing (COMP)
one of these courses (CS 104, CS 105, CS 115).
Lecture: 2 Lab: 1 Credits: 2
CS 330
Satisfies: Computing (COMP)
Discrete Structures
Introduction to the use of formal mathematical structures to
CS 105
represent problems and computational processes. Topics covered
Introduction to Computer Programming
include Boolean algebra, first-order logic, recursive structures,
Introduces the use of high-level programming language as a
graphs, and abstract language models. Credit will not be granted for
problem-solving tool, including basic data structures and algorithms,
both CS 330 and MATH 230.
structured programming techniques, and software documentation.
Prerequisite(s): CS 201 or CS 116
Designed for students who have had little or no prior experience with
Lecture: 3 Lab: 1 Credits: 3
computer programming. Students should only take one of these
Satisfies: Communications (C)
courses (CS 104, CS 105, CS 115).
Lecture: 2 Lab: 1 Credits: 2
CS 331
Satisfies: Computing (COMP)
Data Structures and Algorithms
Implementation and application of the essential data structures
CS 110
used in computer science. Analysis of basic sorting and searching
Computing Principles
algorithms and their relationship to these data structures. Particular
An introduction to the following "big ideas" of computer science: (1)
emphasis is given to the use of object-oriented design and data
computing is a creative activity; (2) abstraction reduces information
abstraction in the creation and application of data structures.
and detail to facilitate focus on relevant concepts; (3) data and
Prerequisite(s): CS 116 or CS 201
information facilitate the creation of knowledge; (4) algorithms are
Lecture: 3 Lab: 1 Credits: 3
used to develop and express solutions to computational problems;
(5) programming enables problem solving, human expression, and
CS 340
creation of knowledge; (6) the internet pervades modern computing;
Programming Paradigms and Patterns
and (7) computing has global impacts.
This class balances the imperative, object-oriented bent of the
Lecture: 2 Lab: 1 Credits: 2
introductory programming sequence by presenting alternative
Satisfies: Computing (COMP)
programming paradigms and asks students to write complex
programs from scratch while amassing a repertoire of reusable
CS 115
programming patterns and techniques. Programming assignments,
Object-Oriented Programming I
drawn from various domains of computer science, will highlight the
Introduces the use of a high-level object-oriented programming
importance of selecting appropriate data structures, algorithms, and
language as a problem-solving tool, including basic data structures
techniques for the problem at hand.
and algorithms, object-oriented programming techniques, and
Prerequisite(s): CS 116 or CS 201
software documentation. Designed for students who have had little
Lecture: 3 Lab: 0 Credits: 3
or no prior experience with computer programming. For students in
CS and CS-related degree programs. Students should only take one
of these courses (CS 104, CS 105, CS 115).
Lecture: 2 Lab: 1 Credits: 2
Satisfies: Computing (COMP)
Computer Science 5
CS 350 CS 403
Computer Organization and Assembly Language Programming Foundations to Advanced Studies
Introduction to the internal architecture of computer systems, This course is a six-credit hour integration of CS 401 and CS 402.
including micro-, mini-, and mainframe computer architectures. The course is an introduction to data structures but is designed to
Focuses on the relationship among a computer's hardware, expand programming skills/concepts using software development
its native instruction set, and the implementation of high-level methodology techniques. The course also provides an introduction
languages on that machine. Uses a set of assembly language to computer architecture and systems programming including
programming exercises to explore and analyze a microcomputer assembly language programming, event handling and multi-
architecture. Credit will not be granted for both CS 350 and ECE 242. threading.
Prerequisite(s): CS 116* or CS 201*, An asterisk (*) designates a Lecture: 4 Lab: 4 Credits: 6
course which may be taken concurrently.
Lecture: 3 Lab: 1 Credits: 3 CS 406
Introduction to Discrete Structures and Algorithms
CS 351 This course will provide students with an understanding of some
Systems Programming basic discrete mathematics and techniques for designing computer
Examines the components of sophisticated multilayer software algorithms and measuring and analyzing their behavior. We
systems, including device drivers, systems software, applications emphasize the necessary mathematical ideas such as how to prove
interfaces, and user interfaces. Explores the design and a mathematical statement, how to analyze the worst case and
development of interrupt-driven and event-driven software. the average case complexity of an algorithm. We also introduce
Prerequisite(s): (CS 331 and CS 350) or (CS 331 and ECE 242) students to some new techniques used in designing algorithms,
Lecture: 3 Lab: 1 Credits: 3 such as the approximation algorithms and randomized algorithms.
Lecture: 3 Lab: 0 Credits: 3
CS 397
Special Projects CS 411
**Instructor permission required.** Computer Graphics
Credit: Variable Overview of display devices and applications. Vector graphics in
two and three dimensions. Image generation, representation, and
CS 401 manipulation. Homogeneous coordinates. Modeling and hidden line
Introduction to Advanced Studies I elimination. Introduction to raster graphics. Perspective and parallel
First course in a two-course sequence that is designed to prepare projections.
students for graduate study in computer science. Explores the Prerequisite(s): (CS 331 or CS 401 or CSSP 401 with min. grade of S)
implementation and application of fundamental data structures and (MATH 332 or MATH 333)
and algorithms with an emphasis on object-oriented programming Lecture: 3 Lab: 0 Credits: 3
in Java. Examines the relationship between these elements and Satisfies: CS Technical Elective (T)
the mathematical structures that form the foundation of computer
science. This course does not apply toward M. S./Ph. D. credit in CS 422
Computer Science. Data Mining
Prerequisite(s): CS 200 or CS 201 This course will provide an introductory look at concepts
Lecture: 2 Lab: 2 Credits: 3 and techniques in the field of data mining. After covering the
introduction and terminologies to Data Mining, the techniques
CS 402 used to explore the large quantities of data for the discovery of
Introduction to Advanced Studies II meaningful rules and knowledge such as market basket analysis,
Second course in a two-course sequence that is designed to nearest neighbor, decision trees, and clustering are covered. The
prepare students for graduate study in computer science. Explores students learn the material by implementing different techniques
the development of the multiple layers of software that form a throughout the semester.
sophisticated software system, from device drivers to application Prerequisite(s): CS 331 or CS 401 or CSSP 401 with min. grade of S
interfaces to user interfaces. Examines how computer architecture or CS 403
influences software development. Emphasizes the design and Lecture: 3 Lab: 0 Credits: 3
implementation of interrupt-driven/event-driven software. Satisfies: CS Technical Elective (T)
Prerequisite(s): CS 401 or CSSP 401 with min. grade of S
Lecture: 2 Lab: 2 Credits: 3 CS 425
Database Organization
Overview of database architectures, including the Relational,
Hierarchical, Network, and Object Models. Database interfaces,
including the SQL query language. Database design using the Entity-
Relationship Model. Issues such as security, integrity, and query
optimization.
Prerequisite(s): CS 331 or CS 401 or CSSP 401 with min. grade of S
or CS 403
Lecture: 3 Lab: 0 Credits: 3
Satisfies: CS Technical Elective (T)
6 Computer Science
CS 429 CS 443
Information Retrieval Compiler Construction
Overview of fundamental issues of information retrieval with This course covers the design and implementation of a compiler
theoretical foundations. The information-retrieval techniques and for modern languages by implementing the following: abstract
theory, covering both effectiveness and run-time performance syntax trees; intermediate representations; static analysis; fix-point
of information-retrieval systems are covered. The focus is on operations; symbol tables and type checking; and first-order and
algorithms and heuristics used to find documents relevant to high-order function implementation. Students will incrementally
the user request and to find them fast. The course covers the create a series of compilers.
architecture and components of the search engine such as parser, Prerequisite(s): CS 440
stemmer, index builder, and query processor. The students learn the Lecture: 3 Lab: 0 Credits: 3
material by building a prototype of such a search engine. Requires Satisfies: CS Technical Elective (T)
strong programming knowledge.
Prerequisite(s): CS 331 or CS 401 or CSSP 401 with min. grade of S CS 445
Lecture: 3 Lab: 0 Credits: 3 Object Oriented Design and Programming
Satisfies: CS Technical Elective (T) Introduction to methodologies for object-oriented design and
programming. Examines the object model and how it is realized
CS 430 in various object-oriented languages. Focuses on methods for
Introduction to Algorithms developing and implementing object-oriented systems.
Introduction to the design, behavior, and analysis of computer Prerequisite(s): CS 331 or CS 401 or CSSP 401 with min. grade of S
algorithms. Searching, sorting, and combinatorial algorithms are or CS 403
emphasized. Worst case, amortized, and expected bounds on time Lecture: 3 Lab: 0 Credits: 3
and space usage. Satisfies: CS Technical Elective (T)
Prerequisite(s): (CS 331 and CS 330) or (CS 331 and MATH 230) or
CS 401 or CSSP 401 with min. grade of S or CS 403 CS 450
Lecture: 3 Lab: 1 Credits: 3 Operating Systems
Satisfies: Communications (C), CS Technical Elective (T) Introduction to operating system concepts-including system
organization for uniprocessors and multiprocessors, scheduling
CS 440 algorithms, process management, deadlocks, paging and
Programming Languages and Translators segmentation, files and protection, and process coordination and
Study of commonly used computer programming languages with communication.
an emphasis on precision of definition and facility in use. Scanning, Prerequisite(s): CS 351 or CS 401 or CSSP 401 and CS 402 or
parsing, and introduction to compiler design. Use of compiler CSSP 402 or CS 403
generating tools. Lecture: 3 Lab: 0 Credits: 3
Prerequisite(s): (CS 331 and CS 330) or (CS 331 and MATH 230) or Satisfies: CS Technical Elective (T)
CS 401 or CSSP 401 with min. grade of S or CS 403
Lecture: 3 Lab: 0 Credits: 3 CS 451
Satisfies: CS Technical Elective (T) Introduction to Parallel and Distributed Computing
This course covers general introductory concepts in the design and
CS 442 implementation of parallel and distributed systems covering all the
Mobile Applications Development major branches such as cloud computing, grid computing, cluster
Students will learn a variety of software engineering techniques and computing, supercomputing, and many-core computing.
design patterns to assist in the rapid development and prototyping Prerequisite(s): CS 351 or CS 450
of applications, leveraging frameworks and APIs provided by Lecture: 3 Lab: 0 Credits: 3
current mobile development platforms (such as Android and Satisfies: CS Technical Elective (T)
iOS). Application lifecycles, data management and persistence
mechanisms, and user interface design, among other topics, will CS 455
be covered. Industry speakers will be invited to speak about best Data Communications
practices. Students (individually or in teams) will take ideas from Introduction to data communication concepts and facilities with an
concept to final implementation and will present their work at emphasis on protocols and interface specifications. Focuses on the
the end of the semester. When appropriate, students may take lower four layers of the ISO-OSI reference model.
the additional step of deploying their work on the appropriate Prerequisite(s): CS 450
application marketplace(s). Lecture: 3 Lab: 0 Credits: 3
Prerequisite(s): (CS 331 or CS 401 or CSSP 401 with min. grade of Satisfies: CS Technical Elective (T)
S) and (CS 351* or CS 402* or CSSP 402* with min. grade of S), An
asterisk (*) designates a course which may be taken concurrently.
Lecture: 3 Lab: 0 Credits: 3
Satisfies: CS Technical Elective (T)
Computer Science 7
CS 456 CS 481
Introduction to Wireless Networks and Performance Artificial Intelligence Language Understanding
This class provides an opportunity for students to obtain a Theory and programming paradigms that enable systems to
fundamental understanding of the nature and operation of the full understand human language texts and extract useful information
range of wireless networks (personal, local area, wide area, and and knowledge. For example, extraction of structured event
satellite) and their performance characteristics, future potential, and representations from news stories or discovering new research
challenges through class lectures, assigned readings, homework, hypotheses by analyzing thousands of medical research articles. the
projects, and various hands-on experiences. course covers a variety of text analysis and text mining methods,
Prerequisite(s): CS 350 or ECE 242 CS 401 or CSSP 401 and CS 402 with an emphasis on building working systems. Connections to
or CSSP 402 or CS 403 information retrieval, data mining, and speech recognition will be
Lecture: 3 Lab: 0 Credits: 3 discussed.
Satisfies: CS Technical Elective (T) Prerequisite(s): (CS 331 or CS 401 or CSSP 401 with min. grade of S)
and (MATH 474* or MATH 475*), An asterisk (*) designates a course
CS 458 which may be taken concurrently.
Introduction to Information Security Lecture: 3 Lab: 0 Credits: 3
An introduction to the fundamentals of computer and information Satisfies: CS Technical Elective (T)
security. This course focuses on algorithms and techniques used to
defend against malicious software. Topics include an introduction CS 482
to encryption systems, operating system security, database security, Information and Knowledge Management Systems
network security, system threats, and risk avoidance procedures. This capstone course is designed as a project course whose
Prerequisite(s): CS 425 or CS 450 or CS 455 purpose is to enable students to see how the various algorithms
Lecture: 3 Lab: 0 Credits: 3 and systems they have learned about in their prerequisite courses
Satisfies: CS Technical Elective (T) can be used in context to create useful knowledge management
tools. Class periods will be divided among discussion of design
CS 470 of information and knowledge management systems, lectures on
Computer Architecture effective project management techniques, and hands-on advising of
Introduction to the functional elements and structures of digital student project group meetings.
computers. Detailed study of specific machines at the register Prerequisite(s): (CS 425 and CS 422 and CS 429) or (CS 425 and
transfer level illustrates arithmetic, memory, I/O and instruction CS 422 and CS 481) or (CS 425 and CS 429 and CS 481)
processing. Lecture: 3 Lab: 0 Credits: 3
Prerequisite(s): CS 350 or ECE 242 or CS 402 Satisfies: CS Technical Elective (T)
Lecture: 3 Lab: 0 Credits: 3
Satisfies: CS Technical Elective (T) CS 484
Introduction to Machine Learning
CS 480 An introduction to machine learning concepts and algorithms,
Introduction to Artificial Intelligence including classification, clustering, and regression. Topics include
Introduction to computational methods for intelligent control k-means clustering, nearest neighbors classification, decision
of autonomous agents, and the use of programming paradigms trees, naive Bayes, logistic regression, support vector machines,
that support development of flexible and reactive systems. These and neural networks. Special focus will be on practical aspects of
include heuristic search, knowledge representation, constraint machine learning, including data preparation, experimental design,
satisfaction, probabilistic reasoning, decision-theoretic control, and and modern tools for building machine learning systems. Basic
sensor interpretation. Particular focus will be places on real-world probability theory knowledge is required.
application of the material. Prerequisite(s): MATH 151 and CS 116 or CS 201 or CS 401
Prerequisite(s): (CS 331 or CS 401 or CSSP 401 with min. grade of S) Lecture: 3 Lab: 0 Credits: 3
and (MATH 474* or MATH 475*), An asterisk (*) designates a course Satisfies: CS Technical Elective (T)
which may be taken concurrently.
Lecture: 3 Lab: 0 Credits: 3 CS 485
Satisfies: CS Technical Elective (T) Computers and Society
Discussion of the impact of computer technology on present and
future society. Historical development of the computer. Social issues
raised by cybernetics.
Prerequisite(s): COM 421 or COM 424 or COM 425 or COM 428 or
COM 435
Lecture: 3 Lab: 0 Credits: 3
Satisfies: Communications (C)
8 Computer Science
CS 487
Software Engineering I
Study of the principles and practices of software engineering.
Topics include software quality concepts, process models, software
requirements analysis, design methodologies, software testing and
software maintenance. Hands-on experience building a software
system using the waterfall life cycle model. Students work in teams
to develop all life cycle deliverables: requirements document,
specification and design documents, system code, test plan, and
user manuals.
Prerequisite(s): (CS 331 or CS 401 or CSSP 401 with min. grade of S
or CS 403) and CS 425
Lecture: 3 Lab: 0 Credits: 3
Satisfies: Communications (C), CS Technical Elective (T)
CS 491
Undergraduate Research
**Instructor permission required.**
Credit: Variable
CS 492
Introduction to Computer Science Research
Prepares undergraduate computer science majors for conducting
research.
Lecture: 1 Lab: 0 Credits: 1
CS 495
Topics in Computer Science
This course will treat a specific topic, varying from semester to
semester, in which there is particular student or staff interest.
Credit: Variable
CS 497
Special Projects
Special projects.
Credit: Variable