Computer Science Courses
The Saint Louis University Department of Computer Science offers courses at the undergraduate and graduate level.
CSCI 1010 - Introduction to Computer Science: Principles
3 Credits
A broad survey of the computer science discipline, focusing on the computer's role in representing, storing, manipulating, organizing and communicating information. Topics include hardware, software, algorithms, operating systems, networks.
Attributes: CSCI Intro to Computer Science
CSCI 1020 - Introduction to Computer Science: Bioinformatics
3 Credits
An introduction to computer programming motivated by the analysis of biological data sets and the modeling of biological systems. Computing concepts to include data representation, control structures, text processing, input and output. Applications to include the representation and analysis of protein and genetic sequences, and the use of available biological data sets.
Attributes: Bio-Chemical Biology Elective, CSCI Intro to Computer Science, UUC:Natural & Applied Science
CSCI 1025 - Introduction to Computer Science: Cybersecurity
3 Credits
An introduction to the fundamental principles of computer and network security, privacy-preserving communication techniques, and an overview of prominent attacks on computer systems, networks, and the Web. Students will gain an understanding of security and privacy, including vulnerabilities and requirements of a secure system, and will conduct a series of lab exercises to explore these topics.
Attributes: CSCI Intro to Computer Science
CSCI 1030 - Introduction to Computer Science: Game Design
3 Credits
Introduces the design of computer and video games. Students learn the practical aspects of game implementation using computer game engines and 3D graphics tools, while simultaneously studying game concepts like history, genres, storylines, gameplay elements and challenges, and the design process.
CSCI 1040 - Introduction to Computer Science: Mobile Computing
3 Credits
An introduction to programming based on the development of apps for mobile devices such as phones and tablets. Students will learn to design an effective user interface, to interact with device hardware and sensors, to store data locally and access Internet resources.
Attributes: CSCI Intro to Computer Science
CSCI 1050 - Introduction to Computer Science: Multimedia
3 Credits
An introduction to computer programming, motivated by the creation and manipulation of images, animations, and audio. Traditional software development concepts, such as data representation and control flow, are introduced for the purpose of image processing, data visualization, and the synthesis and editing of audio.
Attributes: CSCI Intro to Computer Science, UUC:Creative Expression
CSCI 1060 - Introduction to Computer Science: Scientific Programming
3 Credits
Elementary computer programming concepts with an emphasis on problem solving and applications to scientific and engineering applications. Topics include data acquisition and analysis, simulation and scientific visualization.
Prerequisite(s): (MATH 1510*, MATH 1320, MATH 1520, MATH 2530, or SLU Math Placement with a minimum score of 1520)
* Concurrent enrollment allowed.
Attributes: CSCI Intro to Computer Science, Foreign Language BA Req (CAS), UUC:Quantitative Reasoning
CSCI 1070 - Introduction to Computer Science: Taming Big Data
3 Credits
An introduction to data science and machine learning. Fundamentals of data representation and analysis will be covered, with a focus on real-world applications to business intelligence, natural language processing, and social network analysis.
Attributes: CSCI Intro to Computer Science, UUC:Quantitative Reasoning
CSCI 1080 - Introduction to Computer Science: World Wide Web
3 Credits
An introduction to the technology of the web, from the structure of the Internet (web science) to the design of dynamic web pages (web development). The web science component of the class introduces notions of the web as an example of a network and use the tools of graph theory to better understand the web. The web development component introduces some of the fundamental languages and tools for web programming.
Attributes: CSCI Intro to Computer Science
CSCI 1090 - Introduction to Computer Science: Special Topics
3 Credits (Repeatable for credit)
Special topics offerings that qualify for CSCI 10XX: Introduction to Computer Science credit.
Attributes: CSCI Intro to Computer Science
CSCI 1300 - Introduction to Object-Oriented Programming
4 Credits
A rigorous introduction to programming using an object-oriented language, including use of variables, control structures, existing classes and functions and recursion, as well as user-defined functions and classes. Good software development practices will also be established, including issues of design, documentation, and testing.
Prerequisite(s): ((0 Course from CSCI 1010-1090 with a grade of C- or higher, BME 2000 with a grade of C- or higher, CVNG 1500 with a grade of C- or higher, MATH 3850 with a grade of C- or higher, STAT 3850 with a grade of C- or higher, ECE 1001 with a grade of C- or higher, or GIS 4090 with a grade of C- or higher); (MATH 1200 or 0 Course from MATH 1320-4999))
Attributes: Foreign Language BA Req (CAS)
CSCI 1930 - Special Topics
1-4 Credits (Repeatable for credit)
CSCI 1980 - Independent Study
1-3 Credits (Repeatable for credit)
CSCI 2100 - Data Structures
4 Credits
The design, implementation and use of data structures. Principles of abstraction, encapsulation and modularity to guide in the creation of robust, adaptable, reusable and efficient structures. Specific data types to include stacks, queues, dictionaries, trees and graphs.
Prerequisite(s): (CSCI 1300 with a grade of C- or higher and MATH 1660*)
* Concurrent enrollment allowed.
CSCI 2190 - Computational Problem Solving
1 Credit
Intended primarily to train students for the International Collegiate Programming Contest (ICPC), this course covers data structures, algorithms, and programming techniques that apply to typical programming challenges.
Prerequisite(s): CSCI 2100
CSCI 2300 - Object-Oriented Software Design
3 Credits
An implementation-based study of object-oriented software development. Teams will design and create medium-scale applications. Additional focus on the design and use of large object-oriented libraries, as well as social and professional issues.
Prerequisite(s): CSCI 2100 with a grade of C- or higher
CSCI 2500 - Computer Organization and Systems
3 Credits
An introduction to computer systems, from hardware to operating systems. Topics include computer architecture, instruction sets, data representation, memory systems, and how the operating system manages processes and user applications. (Offered in Fall)
Prerequisite(s): CSCI 2100*
* Concurrent enrollment allowed.
CSCI 2510 - Principles of Computing Systems
3 Credits
An exploration of computing systems with a strong emphasis on how systems interact with each other. Topics will include concurrent and parallel programming, network communication, and computer security. In addition to foundational knowledge, the course includes simulating, benchmarking, and testing such systems. (Offered in Spring)
Prerequisite(s): (CSCI 2500 with a grade of C- or higher or (ECE 2205, ECE 3217, and ECE 3225))
CSCI 2930 - Special Topics
1-4 Credits (Repeatable for credit)
CSCI 2980 - Independent Study
1-3 Credits (Repeatable for credit)
Prior approval of sponsoring professor and chair required.
Attributes: Special Approval Required
CSCI 3050 - Computer Ethics
3 Credits
This course examines the moral, legal, and social issues raised by computers and electronic information technologies for different stakeholder groups (professionals, users, businesses, etc.). Students are expected to integrate moral theories and social analysis to address such issues as intellectual property, security, privacy, discrimination, globalization, and community.
Prerequisite(s): PHIL 2050
Attributes: Philosophy Requirement (A&S), UUC:Dignity, Ethics & Just Soc
CSCI 3100 - Algorithms
3 Credits
Introduction to analysis and complexity of algorithms. Big-O notation. Running time analysis of algorithms for traversing graphs and trees, searching and sorting. Recursive versus iterative algorithms. Complexity, completeness, computability.
Prerequisite(s): CSCI 2100; MATH 1660; (MATH 1510, MATH 1520, MATH 2530, and SLU Math Placement with a minimum score of 1520)
CSCI 3200 - Programming Languages
3 Credits
Overview of programming languages: procedural and functional languages. Exposure to functional languages. Analysis of solution strategies to variable binding and function calls. Problem solving paradigms and linguistic issues.
Prerequisite(s): CSCI 2300
CSCI 3250 - Compilers
3 Credits
Introduction to the theory and techniques of compiler design, lexical analysis, finite state automata, context-free grammars, top-down and bottom-up parsing, syntax analysis, code generation. Other important issues such as optimization, type-checking, and garbage collection will be discussed.
Prerequisite(s): (CSCI 2400 or ECE 3217); CSCI 2100
CSCI 3300 - Software Engineering
3 Credits
Theory and practice of software engineering. Design and implementation of software systems. Levels of abstraction as a technique in program design. Organized around major group programming projects.
Prerequisite(s): CSCI 2300
CSCI 3450X - Microprocessors
3 Credits
Review of number systems. Microprocessors/microcomputer structure, input/output. Signals and devices. Computer arithmetic, programming, interfacing and data acquisition. Fall semester.
CSCI 3451X - Microprocessors Laboratory
1 Credit
Concurrent registration with ECE 3225. Laboratory experiments to emphasize materials covered in ECE 3225. Fall semester.
CSCI 3500 - Operating Systems
3 Credits
Theory and practice of operating systems as managers of shared computer hardware: processors, memory, mass storage, and peripherals. Includes also an introduction to computer networking. Hands-on experience with general systems programming, concurrent and parallel programming, and network programming.
Prerequisite(s): (CSCI 2100; (CSCI 2400 or ECE 3217))
CSCI 3710 - Databases
3 Credits
Fundamentals of database systems. Topics include relational and NoSQL data models, structured query language, the entity-relationship model, normalization, transactions, file organization and indexes, and data security issues. The knowledge of the listed topics is applied to design and implementation of a database application.
Prerequisite(s): CSCI 2100
CSCI 3810 - Game Programming
3 Credits
Introduction to the programming and development of computer/video games, especially through the use of a computer game engine (e.g. Unity, Unreal, etc.). Course will cover the major aspects of programming and creating games within a game engine, including world/level design, programming within a game engine, basic interaction between code and game assets (character, buildings, objects, weapons, camera, etc.), movement and manipulation of game assets, events such as object collisions, triggers, and timed events, common gameplay mechanics, creating a game interface (HUD), non-player characters and AI, and animation and game sequences. The course is a project- based course, culminating with the students integrating the many topics and tools to develop their own complete game.
CSCI 3910 - Internship with Industry
1-6 Credits (Repeatable for credit)
A work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up evaluation required.
Attributes: UUC:Reflection-in-Action
CSCI 3930 - Special Topics
1-4 Credits (Repeatable for credit)
CSCI 3980 - Independent Study
1-3 Credits (Repeatable for credit)
Prior approval of sponsoring professor and chairperson required.
Attributes: Special Approval Required
CSCI 4120 - Advanced Data Structures
3 Credits
A comprehensive treatment of the design, analysis and implementation of advanced data structures, and their role in algorithmic design. Topics include data structures that are dynamic, persistent and/or cache-oblivious, an examination of performance including both amortized and probabilistic analyses, and domain-specific applications of data structures. (Offered occasionally)
Prerequisite(s): CSCI 3100
CSCI 4310 - Software Architecture
3 Credits
The theory and practice of software architecture and global design of software systems, with focus on recurring architectural patterns via in-depth case studies of various large-scale systems. (Offered occasionally)
Prerequisite(s): CSCI 3300
CSCI 4340 - Safety-Critical Software Systems
3 Credits
This course provides an introduction to current processes guiding the development of software for safety-critical systems. The primary standard used is RTCA’s DO-178C used by FAA for aviation, with additional discussion of the standards used by military and space programs. The general approach is also applicable to medical devices and emerging automotive safety stand- ards.
CSCI 4355 - Human Computer Interaction
3 Credits
You will engage in an in-depth exploration of the field of Human-Computer Interaction (HCI) including its history, goals, principles, methodologies, successes, failures, open problems, and emerging areas. Broad topics include theories of interaction (e.g., conceptual models, stages of execution, error analysis, constraints, memory by affordances), design methods (e.g., user-centered design, task analysis, prototyping tools), visual design principles (e.g., visual communication, digital typography, color, motion), evaluation techniques (e.g., heuristic evaluations, model-based evaluations), and emerging topics (e.g., information visualization, affective computing, natural user interfaces).
CSCI 4360 - Web Technologies
3 Credits
An overview of the client-side and server-side technologies that power the modern web. Hands-on experience with interactive web site and web application development for desktop and mobile. (Offered occasionally)
Prerequisite(s): CSCI 2300
CSCI 4370 - User Interface Design
3 Credits
Examination of the theory, design, programming, and evaluation of interactive application interfaces. Topics include human capabilities and limitations, the interface design and engineering process, prototyping and interface construction, interface evaluation.
CSCI 4380 - DevOps
3 Credits
Software engineering practices require knowledge of the environment in which an application is to be run. In the modern world, this means knowledge of virtualization, containers, networking, the cloud, and security techniques for the internet. A developer should also know about microservices, configuration management, the deployment pipeline, monitoring and post-production, disaster recovery, and how to develop secure applications.
CSCI 4500 - Advanced Operating Systems
3 Credits
Parallel processes; processor problems; linear address space and tree structured spaces of objects; resource allocation, queuing and network control policies; system balancing and thrashing; job allocation and process scheduling; multiprogramming systems; protection mechanisms for accessing jobs; pipelining and parallelism; distributed systems.
Prerequisite(s): CSCI 2510
CSCI 4520 - Internet of Things
3 Credits
The course introduces the concepts and principles of Internet of Things development and management. It covers an overview of the IoT device hardware and software modules, along with their communication capabilities over Internet. The ultimate goal is to be able to understand the common issues of IoT development, from the design phase, to the choice of sensors and actuators, the communication model, and the software development. From the practical point of view, the course provides hands-on experience with real and simulated devices.
CSCI 4530 - Computer Security
3 Credits
Fundamental introduction to the broad area of computer security. Topics include access control, security policy design, network security, cryptography, ethics, securing systems, and common vulnerabilities in computer systems.
Prerequisite(s): (CSCI 2510 or CSCI 3500)
CSCI 4550 - Computer Networks
3 Credits
An exploration of the underlying concepts and principles of computer networks. Topics include communication protocols such as TCP/IP, design of network architectures, and the management and security of networks. Examples of real networks will be used to reinforce and demonstrate concepts.
Prerequisite(s): (CSCI 2510 or CSCI 3500)
CSCI 4590 - Wireless Sensor Networks
3 Credits
The goal of this course is to let students have a deep understanding of Wireless Sensor Networks (WSN). We will cover multiple important topics in WSN, including WSN Applications and Design Model, Network models, Network Bootstrapping, Data Dissemination and Routing, Link Layers Design, and Dependability Issues, etc. Students are also required to read multiple papers and present papers in the class. In the paper reading section, a group of students should present a paper and find technical drawbacks of the paper. The presenters should also answer the questions from the audience.
Prerequisite(s): MATH 3110; CSCI 2100
CSCI 4610 - Concurrent and Parallel Programming
3 Credits
The design and implementation of software that fully leverages a single computer’s resources. Topics include profiling and optimization of codes, multi-threaded programming, parallelism using a graphical processor unit (GPU), and efficient use of memory cache. (Offered occasionally)
Prerequisite(s): (CSCI 2510 or CSCI 3500)
CSCI 4620 - Distributed Computing
3 Credits
The design and implementation of software solutions that rely upon the cooperation of multiple computing systems. Topics will include parallelization of computation and data storage across small clusters of computers, and the deployment of systems in large-scale grid and cloud computing environments. (Offered occasionally)
Prerequisite(s): CSCI 2510
CSCI 4710 - Databases
3 Credits
Fundamentals of database systems. Topics include relational and NoSQL data models, structured query language, the entity-relationship model, normalization, transactions, file organization and indexes, and data security issues. The knowledge of the listed topics is applied to design and implementation of a database application.
Prerequisite(s): CSCI 2100
CSCI 4740 - Artificial Intelligence
3 Credits
Fundamental introduction to the broad area of artificial intelligence and its applications. Topics include knowledge representation, logic, search spaces, reasoning with uncertainty, and machine learning.
Prerequisite(s): CSCI 2100
CSCI 4750 - Machine Learning
3 Credits
This course introduces students to the field of machine learning with emphasis on the probabilistic models that dominate contemporary applications. Students will discover how computers can learn from examples and extract salient patterns hidden in large data sets. The course will introduce classification algorithms that predict discrete states for variables as well as regression algorithms that predict continuous values for variables. Attention will be given to both supervised and unsupervised settings in which (respectively) labeled training data is or is not available.
Prerequisite(s): STAT 3850; CSCI 2100; MATH 2530
Attributes: Geospatial Elective
CSCI 4756 - Applied Machine Learning
3 Credits
The course introduces the concepts, algorithms, and applications for modern machine learning approaches. Students will learn the theoretical foundations of supervised learning methods in which labeled training data is available for regression/classification problems. Attention will also be given to unsupervised learning when the label information of the training data is missing. Topics include linear regression, nonlinear regression, support vector machines, neural networks, deep learning, ensemble methods, probabilistic models, clustering, and dimensionality reduction. Emphasis is placed on the mathematical formulation of the machine learning models and their practical applications on various research questions.
CSCI 4760 - Deep Learning
3 Credits
An exploration of multi-layered machine learning architectures as applied to problems in a variety of domains. The course will study various network architectures including deep feed-forward, convolutional and recurrent networks, and uses in both supervised and unsupervised learning. Students will implement solutions in different problem domains, and learn to effectively manage practical and domain-specific issues that affect model performance. (Offered in Spring)
Prerequisite(s): CSCI 4750
CSCI 4770 - Big Data Analytics
3 Credits
This course will introduce basic concepts in the business analytics field, along with some popular techniques and tools. Students will have opportunities to explore and analyze large quantities of observational data in order to discover meaningful patterns and useful information to support decision making in business contexts.
CSCI 4780 - Data Engineering
3 Credits
This course introduces students to the objectives and techniques of data engineering as a critical step in the effective application of machine learning and other data analysis techniques. The course will include data selection and profiling to improve the nature and understanding of the problem space; transformation and aggregation to cleanse and consolidate data; and feature engineering to expose critical characteristics for downstream analytics. Through instructor-provided programming assignments and self-designed projects, by the end of this course students will be able to implement data processing pipelines that transform data from their raw format into datasets useful for analysis. AI, Machine Learning, and Data Science are hot topics and seen (rightly and wrongly) as a fast path to new insight and innovation across all industries. One of biggest challenges we face in delivering on that promise is the connection between business context, available data, and analysis techniques (e.g., ML).
CSCI 4820 - Computer Graphics
3 Credits
Applications and implementation of computer graphics. Algorithms and mathematics for creating two and three dimensional figures. Animation and two and three dimensional transformations. Interaction, windowing, and perspective techniques. Coding using the graphics library OpenGL.
Prerequisite(s): (CSCI 2100; MATH 2530; (MATH 3110 or MATH 3120))
CSCI 4830 - Computer Vision
3 Credits
This course will introduce the fundamentals of image processing and computer vision, including image models and representation, image analysis methods such as feature extraction (color, texture, edges, shape, skeletons, etc.), image transformations, image segmentation, image understanding, motion and video analysis, and application-specific methods such as medical imaging, facial recognition, and content-based image retrieval. (Offered occasionally)
Prerequisite(s): CSCI 2100
CSCI 4845 - Natural Language Processing
3 Credits
Introduction to the development of computer systems that attempt to manage the complexity and diversity of human language. Application of artificial intelligence and machine learning techniques to address problems such as machine translation and speech recognition. Emphasis to be placed on working with real data sets in the form of text corpora and sound recordings. (Offered occasionally)
Prerequisite(s): CSCI 4750
Attributes: Linguistics Elective
CSCI 4860 - Autonomous Driving
3 Credits
The goal of this course is to introduce the basics of autonomous vehicle and automated driving system (ADS). We will introduce SAE levels, ADS architecture, Vehicle Models, Sensors and Sen- sor Fusion, Basics of SLAM, Vehicle Control Theory and Algorithms, and Famous ADS Solutions. Students are also required to read multiple papers and present the papers in the class. In the paper reading section, a group of students should present a paper and find the technical drawbacks of the paper. The presenters should also answer the questions from the audience.
Prerequisite(s): MATH 3110; CSCI 2100
CSCI 4870 - Applied Cryptography
3 Credits
An overview of the topic of cryptography from a computer science perspective, including the study of basic cryptographic algorithms and the mathematics behind them. Students will also be able to understand security system design and apply the basics to more complex systems using common programming libraries and tools.
CSCI 4910 - Internship with Industry
1-6 Credits (Repeatable for credit)
A work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up evaluation required.
Attributes: UUC:Reflection-in-Action
CSCI 4930 - Special Topics
1-4 Credits (Repeatable for credit)
CSCI 4961 - Capstone Project I
2 Credits
The first part of a two-course sequence serving as a concluding achievement for graduating students. In this course, students develop a proposal, collect and formalize specifications, become acquainted with necessary technologies, and create and present a detailed design for completing the project.
Prerequisite(s): (CSCI 2510 or ECE 3127)
Restrictions:
Enrollment limited to students with a classification of Junior or Senior.
Enrollment limited to students in the Computer Science department.
CSCI 4962 - Capstone Project II
2 Credits
The continuation of CSCI 4961. In the second part of the sequence, students complete their project based upon the design that was developed during the first part of the sequence. Students must demonstrate continued progress throughout the semester and make a preliminary and final presentation of their results.
Prerequisite(s): CSCI 4961
CSCI 4980 - Advanced Independent Study
1-6 Credits (Repeatable for credit)
Prior permission of sponsoring professor and chairperson required.
Attributes: Special Approval Required
CSCI 5001 - Object-Oriented Programming
3 Credits
An accelerated introduction to object-oriented computer programming including coverage of classes, methods, inheritance and polymorphism. Good software development practices will also be established, including issues of design, documentation, and testing. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Grad Pol Sci Skills
CSCI 5002 - Data Structures
3 Credits
An accelerated study of the design, implementation, and use of data structures. Principles of abstraction, encapsulation, and modularity to guide in the creation of robust, adaptable, reusable and efficient structures. Specific data types to include stacks, queues, dictionaries, trees, and graphs. Students not able to register due to the restrictions may contact the department for permission.
Prerequisite(s): CSCI 5001 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Grad Pol Sci Skills
CSCI 5004 - Introduction to Algorithms
3 Credits
Introduction to analysis and complexity of algorithms. Big-O notation. Running time analysis of algorithms for traversing graphs and trees, searching and sorting. Recursive versus iterative algorithms. Complexity, completeness, computability. (Offered annually)
Prerequisite(s): CSCI 5002 with a grade of C or higher
CSCI 5005 - Intro to Operating Systems
3 Credits
Theory and practice of operating systems as managers of shared computer hardware: processors, memory, mass storage, and peripherals. Includes also an introduction to computer networking. Hands-on experience with general systems programming, concurrent and parallel programming, and network programming. (Offered annually)
Prerequisite(s): CSCI 5002 with a grade of C or higher
CSCI 5010 - Object-Oriented Programming & Data Structures
3 Credits
A rigorous introduction to programming using an object-oriented language, including use of variables, control structures, existing classes and functions and recursion, as well as user-defined functions and classes. Good software development practices will also be established, including issues of design, documentation, and testing. An introduction to Stacks, Queues, Linked Lists, Trees, Search Trees, Maps, Hash Tables, Sorting, & Selection.
Corequisite(s): CSCI 5011
CSCI 5011 - Object-Oriented Programming & Data Structures Lab
1 Credit
A rigorous introduction to programming using an object-oriented language, including use of variables, control structures, existing classes and functions and recursion, as well as user-defined functions and classes. Good software development practices will also be established, including issues of design, documentation, and testing. An introduction to Stacks, Queues, Linked Lists, Trees, Search Trees, Maps, Hash Tables, Sorting, & Selection.
Corequisite(s): CSCI 5010
CSCI 5015 - Programming Practicum
3 Credits
A broad overview of fundamental programming concepts, tools, and techniques focused around hand-on activities and projects. This course is designed to help prepare students for success in graduate computer science work by practicing foundational programming skills needed throughout disciplines that utilize computer programming.
CSCI 5020 - Object-Oriented Software Design
3 Credits
An implementation-based study of object-oriented software development. Teams will design and create medium-scale applications. Additional focus on the design and use of large object-oriented libraries, as well as social and professional issues. (Offered annually)
CSCI 5030 - Principles of Software Development
3 Credits
An overview of software development at a graduate level, including software engineering processes, software design and architecture, testing and quality assurance, and selected other topics of interest to software practitioners. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Bioinformatics & Comp Bio Elec
CSCI 5050 - Computing and Society
3 Credits
A study of legal and ethical issues that arise with the use of computing technologies, and how new technologies alter the society that we live in. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
CSCI 5070 - Algorithmic Fairness
3 Credits
Machine learning algorithms are being used more and more to make decisions that affect everyone. This course addresses the major moral concerns that these algorithms do not treat people fairly. Students will learn how to detect bias in machine learning models and construct models and training sets that minimize bias. (Offered occasionally)
Prerequisite(s): CSCI 5750 with a grade of C or higher
Restrictions:
Enrollment limited to students in the MS Bioinformatics Comp Biol program.
CSCI 5080 - Web Programming
3 Credits
This course will cover introductory notions behind the technology of the web, from the structure of the Internet to the design of web pages (web development). Students will learn principles of the web as a network, and practical basics for web builders. The web building component introduces some of the fundamental languages of (dynamic) web programming as well as other popular building tools, leading to each student creating his/ her own web site over the term.
CSCI 5090 - Computer Science Colloquium
0-1 Credits (Repeatable for credit)
A series of presentations, given by faculty members and invited speakers, to provide students with exposure to current research and developments in the field of computer science. Students will be required to produce written summaries of the presentations.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
CSCI 5100 - Algorithms
3 Credits
An overview of algorithm design and analysis. Topics include analysis of algorithms for traversing graphs and trees, searching and sorting, recursion, dynamic programming, and approximation, as well as the concepts of complexity, completeness, and computability. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: CS Grad-Theory Elective
CSCI 5120 - Advanced Data Structures
3 Credits
A comprehensive treatment of the design, analysis and implementation of advanced data structures, and their role in algorithmic design. Topics include data structures that are dynamic, persistent and/or cache-oblivious, an examination of performance including both amortized and probabilistic analyses, and domain-specific applications of data structures. (Offered occasionally)
Attributes: CS Grad-Theory Elective
CSCI 5150 - Computational Geometry
3 Credits
The goal of computational geometry is to find efficient algorithms for solving geometric problems. Topics include convex hulls, Voronoi diagrams, Delaunay triangulations, geometric search and geometric data structures. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: CS Grad-Theory Elective
CSCI 5200 - Programming Languages
3 Credits
Overview of programming languages: procedural and functional languages. Exposure to functional languages. Analysis of solution strategies to variable binding and function calls. Problem solving paradigms and linguistic issues. Students not able to register due to the restrictions may contact the department for permission.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the following programs:
- MS Bioinformatics Comp Biol
- Computer Science Accl Pathway
Attributes: CS Grad-Language/Compilers
CSCI 5250 - Compilers
3 Credits
Theory and practice of compiler design, including lexical analysis, finite state automata, context-free grammars, parsing algorithms, and code generation. Other important issues such as optimization, type-checking, and garbage collection will be discussed. Students not able to register due to the restrictions may contact the department for permission.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the following programs:
- MS Bioinformatics Comp Biol
- Computer Science Accl Pathway
Attributes: CS Grad-Language/Compilers
CSCI 5300 - Software Engineering
3 Credits
Key aspects of the software engineering discipline, including software process models, software project initiation, software analysis and design, software project planning and management, and software process and product metrics. Students not able to register due to the restrictions may contact the department for permission.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Software Engineering
CSCI 5310 - Software Architecture
3 Credits
The theory and practice of software architecture and global design of software systems, with focus on recurring architectural patterns via in-depth case studies of various large-scale systems. Students not able to register due to the restrictions may contact the department for permission.
Prerequisite(s): CSCI 5300 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the following programs:
- MS Bioinformatics Comp Biol
- Computer Science Accl Pathway
Attributes: CS Grad-Software Engineering
CSCI 5330 - Software Quality Assurance
3 Credits
Best practices for the process of quality assurance for complex software systems. Topics include prevention of errors, testing, verification, and validation of software systems, inspection and review processes, and the distinction between process assurance and product assurance. Students not able to register due to the restrictions may contact the department for permission.
Prerequisite(s): CSCI 5300 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the following programs:
- MS Bioinformatics Comp Biol
- Computer Science Accl Pathway
Attributes: CS Grad-Software Engineering
CSCI 5340 - Safety-Critical Software Systems
3 Credits
This course provides an introduction to current processes guiding the development of software for safety-critical systems. The primary standard used is RTCA’s DO-178C used by FAA for aviation, with additional discussion of the standards used by military and space programs. The general approach is also applicable to medical devices and emerging automotive safety stand- ards.
Attributes: CS Grad-Software Engineering
CSCI 5355 - Human Computer Interaction
3 Credits
You will engage in an in-depth exploration of the field of Human-Computer Interaction (HCI) including its history, goals, principles, methodologies, successes, failures, open problems, and emerging areas. Broad topics include theories of interaction (e.g., conceptual models, stages of execution, error analysis, constraints, memory by affordances), design methods (e.g., user-centered design, task analysis, prototyping tools), visual design principles (e.g., visual communication, digital typography, color, motion), evaluation techniques (e.g., heuristic evaluations, model-based evaluations), and emerging topics (e.g., information visualization, affective computing, natural user interfaces).
Attributes: CS Grad-Software Engineering
CSCI 5360 - Web Technologies
3 Credits
An overview of the client-side and server-side technologies that power the modern web. Hands-on experience with interactive web site and web application development for desktop and mobile. Students not able to register due to the restrictions may contact the department for permission.
Prerequisite(s): CSCI 5030 with a grade of C- or higher
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Software Engineering
CSCI 5370 - User Interface Design
3 Credits
Examination of the theory, design, programming, and evaluation of interactive application interfaces. Topics include human capabilities and limitations, the interface design and engineering process, prototyping and interface construction, interface evaluation.
Attributes: CS Grad-Software Engineering
CSCI 5380 - DevOps
3 Credits
Software engineering practices require knowledge of the environment in which an application is to be run. In the modern world, this means knowledge of virtualization, containers, networking, the cloud, and security techniques for the internet. A developer should also know about microservices, configuration management, the deployment pipeline, monitoring and post-production, disaster recovery, and how to develop secure applications.
Attributes: CS Grad-Software Engineering
CSCI 5500 - Operating Systems
3 Credits
Theory and practice of operating systems, with hands-on emphasis on one of the UNIX family of operating systems. Processes, processor scheduling, virtual memory, parallelism and concurrency, race conditions, file systems, networking models, sockets programming, as well as a general focus on operating systems mechanisms and abstractions. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the following programs:
- MS Bioinformatics Comp Biol
- Computer Science Accl Pathway
Attributes: CS Grad-Systems Elective
CSCI 5520 - Internet of Things
3 Credits
The course introduces the concepts and principles of Internet of Things development and management. It covers an overview of the IoT device hardware and software modules, along with their communication capabilities over Internet. The ultimate goal is to be able to understand the common issues of IoT development, from the design phase, to the choice of sensors and actuators, the communication model, and the software development. From the practical point of view, the course provides hands-on experience with real and simulated devices.
Attributes: CS Grad-Systems Elective
CSCI 5530 - Computer Security
3 Credits
Fundamental introduction to the broad area of computer security. Topics will include access control, security policy design, network security, cryptography, ethics, securing systems, and common vulnerabilities in computer systems. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: CS Grad-Systems Elective
CSCI 5550 - Computer Networks
3 Credits
A graduate-level introduction to the concepts and principles of computer networks, including the basic technologies of a network and how these systems interact. Focus includes the design and implementation of network software that transforms raw hardware into a richly functional communication system. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: CS Grad-Systems Elective
CSCI 5570 - Machine Learning for Networks
3 Credits
An introduction to the underlying concepts and principles of data aspects of computer networks. The course covers machine learning techniques used by networked systems, for both wireless and wired networks. Topics in network analytics and management including traffic analysis and prediction, service differentiation, detection of anomalous network conditions, and enhancement of end-to-end network management and operation. The course includes hands-on assignments using networking tools and large-scale virtual network testbeds that can be used to collect data from network protocols or analyze large data sets for networking problems. (Offered occasionally)
Prerequisite(s): CSCI 5550 with a grade of C or higher
Restrictions:
Enrollment limited to students in the programs.
Attributes: CS Grad-Systems Elective
CSCI 5590 - Wireless Sensor Networks
3 Credits
The goal of this course is to let students have a deep understanding of Wireless Sensor Networks (WSN). We will cover multiple important topics in WSN, including WSN Applications and Design Model, Network models, Network Bootstrapping, Data Dissemination and Routing, Link Layers Design, and Dependability Issues, etc.
Attributes: CS Grad-Systems Elective
CSCI 5610 - Concurrent and Parallel Programming
3 Credits
The design and implementation of software that fully leverages a single computer’s resources. Topics include profiling and optimization of codes, multi-threaded programming, parallelism using a graphical processor unit (GPU), and efficient use of memory cache.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Large Scale Systems
CSCI 5620 - Distributed Computing
3 Credits
The design and implementation of software solutions that rely upon the cooperation of multiple computing systems. Topics will include parallelization of computation and data storage across small clusters of computers, and the deployment of systems in large-scale grid and cloud computing environments.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Large Scale Systems
CSCI 5710 - Databases
3 Credits
Fundamentals of database systems. Topics include relational and NoSQL data models, structured query language, the entity-relationship model, normalization, transactions, file organization and indexes, and data security issues. The knowledge of the listed topics is applied to design and implementation of a database application.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Knowledge Systems
CSCI 5730 - Evolutionary Computation
3 Credits
A survey of the major types of evolutionary algorithms (EAs), a class of stochastic, population-based algorithms inspired by natural evolution theory, genetics, and population dynamics, which are capable of solving complex optimization and modeling problems. This is a rigorous and programming-intensive course in which students will gain hands-on experience in solving complex problems with EAs. (Offered occasionally)
Restrictions:
Enrollment limited to students in the MS Bioinformatics Comp Biol program.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Knowledge Systems
CSCI 5740 - Introduction to Artificial Intelligence
3 Credits
Fundamental introduction to the broad area of artificial intelligence and its applications. Topics include knowledge representation, logic, search spaces, reasoning with uncertainty, and machine learning.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Knowledge Systems
CSCI 5745 - Advanced Techniques in Artificial Intelligence
3 Credits
Intelligent agents in complex environments must deal with uncertainty and how to represent varied knowledge. This course focuses on the design and implementation of agents that can function in such complex environments. Topics include knowledge representation, environments with hidden information, and probabilistic reasoning. (Offered occasionally)
Prerequisite(s): CSCI 5740 with a grade of C or higher
Restrictions:
Enrollment limited to students in the MS Bioinformatics Comp Biol program.
Attributes: CS Grad-Knowledge Systems
CSCI 5750 - Introduction to Machine Learning
3 Credits
This course introduces students to the field of machine learning with emphasis on the probabilistic models that dominate contemporary applications. Students will discover how computers can learn from examples and extract salient patterns hidden in large data sets. The course will introduce classification algorithms that predict discrete states for variables as well as regression algorithms that predict continuous values for variables. Attention will be given to both supervised and unsupervised settings in which (respectively) labeled training data is or is not available. Emphasis is placed on both the conceptual relationships between these different learning problems as well as the statistical models and computational methods used to employ those models. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Knowledge Systems
CSCI 5756 - Applied Machine Learning
3 Credits
The course introduces the concepts, algorithms, and applications for modern machine learning approaches. Students will learn the theoretical foundations of supervised learning methods in which labeled training data is available for regression/classification problems. Attention will also be given to unsupervised learning when the label information of the training data is missing. Topics include linear regression, nonlinear regression, support vector machines, neural networks, deep learning, ensemble methods, probabilistic models, clustering, and dimensionality reduction. Emphasis is placed on the mathematical formulation of the machine learning models and their practical applications on various research questions.
Attributes: CS Grad-Knowledge Systems
CSCI 5760 - Deep Learning
3 Credits
An exploration of multi-layered machine learning architectures as applied to problems in a variety of domains. The course will study various network architectures including deep feed-forward, convolutional and recurrent networks, and uses in both supervised and unsupervised learning. Students will implement solutions in different problem domains, and learn to effectively manage practical and domain-specific issues that affect model performance. (Offered occasionally)
Prerequisite(s): CSCI 5750 with a grade of C or higher
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Knowledge Systems
CSCI 5770 - Big Data Analytics
3 Credits
This course will introduce basic concepts in the business analytics field, along with some popular techniques and tools. Students will have opportunities to explore and analyze large quantities of observational data in order to discover meaningful patterns and useful information to support decision making in business contexts.
Attributes: CS Grad-Knowledge Systems
CSCI 5780 - Data Engineering
3 Credits
This course introduces students to the objectives and techniques of data engineering as a critical step in the effective application of machine learning and other data analysis techniques. The course will include data selection and profiling to improve the nature and understanding of the problem space; transformation and aggregation to cleanse and consolidate data; and feature engineering to expose critical characteristics for downstream analytics. Through instructor-provided programming assignments and self-designed projects, by the end of this course students will be able to implement data processing pipelines that transform data from their raw format into datasets useful for analysis. AI, Machine Learning, and Data Science are hot topics and seen (rightly and wrongly) as a fast path to new insight and innovation across all industries. One of biggest challenges we face in delivering on that promise is the connection between business context, available data, and analysis techniques (e.g., ML).
Attributes: CS Grad-Knowledge Systems
CSCI 5830 - Computer Vision
3 Credits
This course will introduce the fundamentals of image processing and computer vision, including image models and representation, image analysis methods such as feature extraction (color, texture, edges, shape, skeletons, etc.), image transformations, image segmentation, image understanding, motion and video analysis, and application-specific methods such as medical imaging, facial recognition, and content-based image retrieval. Students not able to register due to the restrictions may contact the department for permission.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Bioinformatics & Comp Bio Elec, CS Grad-Advanced Applications
CSCI 5845 - Natural Language Processing
3 Credits
Introduction to the development of computer systems that attempt to manage the complexity and diversity of human language. Application of artificial intelligence and machine learning techniques to address problems such as machine translation and speech recognition. Emphasis to be placed on working with real data sets in the form of text corpora and sound recordings. (Offered occasionally)
Prerequisite(s): CSCI 5750 with a grade of C or higher
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: CS Grad-Advanced Applications
CSCI 5860 - Autonomous Driving
3 Credits
The goal of this course is to introduce the basics of autonomous vehicles (AVs) and vision-based SLAM systems in AVs. We will introduce SAE levels, ADS architectures, vehicle’s bicycle model, sensor fusion, SLAM front-end system, SLAM back-end system, and famous ADS solutions. Students are also required to read multiple papers and present the papers in the class. In the paper reading section, a group of students should present a paper and find the technical drawbacks of the paper. The presenters should also answer the questions from the audience.
Attributes: CS Grad-Advanced Applications
CSCI 5870 - Applied Cryptography
3 Credits
An overview of the topic of cryptography from a computer science perspective, including the study of basic cryptographic algorithms and the mathematics behind them. Students will also be able to understand security system design and apply the basics to more complex systems using common programming libraries and tools.
Attributes: CS Grad-Advanced Applications
CSCI 5910 - Internship with Industry
1-3 Credits (Repeatable for credit)
A work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up reflection and evaluation are required. Permission of department required.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
CSCI 5930 - Special Topics
1-3 Credits (Repeatable up to 12 credits)
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
CSCI 5960 - Software Engineering Capstone Project
3 Credits
A culminating experience in which teams of students complete a full software development life-cycle resulting in the creating of a software system.
Prerequisite(s): CSCI 5300 with a grade of C- or higher
Restrictions:
Enrollment is limited to students with a program in Software Engineering.
CSCI 5961 - Artificial Intelligence Capstone Project
3 Credits
A culminating experience in which teams of students solve complex problems using techniques from artificial intelligence.
Prerequisite(s): CSCI 5740 with a grade of C or higher; CSCI 5750 with a grade of C or higher
Restrictions:
Enrollment is limited to students with a program in Artificial Intelligence.
CSCI 5970 - Research Topics
1-3 Credits (Repeatable for credit)
A research experience in computer science guided by faculty. Permission of instructor required.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Special Approval Required
CSCI 5980 - Graduate Independent Study in Computer Science
1-3 Credits (Repeatable up to 9 credits)
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Special Approval Required
CSCI 5990 - Thesis Research
0-6 Credits (Repeatable for credit)
Work towards a Master's thesis.
Restrictions:
Enrollment limited to students in the Computer Science or Math Stats/Computer Science departments.
Attributes: Special Approval Required
CSCI 6990 - Dissertation Research
0-6 Credits (Repeatable for credit)
Attributes: Special Approval Required