Saint Louis University Menu Search

Undergraduate

CSCI 1010
Introduction to Computer Science: Principles
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.
Prerequisite(s): None
More information

CSCI 1020
Introduction to Computer Science: Bioinformatics
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.
Prerequisite(s): None
More information

CSCI 1030
Introduction to Computer Science: Game Design
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.
Prerequisite(s): None
More information

CSCI 1040
Introduction to Computer Science: Mobile Computing
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.
Prerequisite(s): None
More information

CSCI 1050
Introduction to Computer Science: Multimedia
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.
Prerequisite(s): None
More information

CSCI 1060
Introduction to Computer Science: Scientific Programming
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 or concurrent enrollment
More information

CSCI 1070
Introduction to Computer Science: Taming Big Data
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.
Prerequisite(s): None
More information

CSCI 1080
Introduction to Computer Science: Web Development
The technology of the web, from the structure of the Internet to the design of web-pages. Students will learn Internet standards for encoding information, and create dynamic web pages using the latest technologies. The course introduces fundamentals of computer science, including programming concepts, software engineering principles, ?le systems, and database interactions.
Prerequisite(s): None
More information

CSCI 1090
Introduction to Computer Science: Special Topics
varies
Prerequisite(s): None
More information

CSCI 1300
Introduction to Object-Oriented Programming
An introduction to computer programming based upon early coverage of object-oriented principles such as classes, methods, inheritance and polymorphism, together with treatment of traditional flow of control structures. Good software development practices will also be established, including issues of design, documentation, and testing.
Prerequisite(s): MATH 1200 and C- or better in one of CSCI 1010 through 1090 or equivalent programming experience with permission
More information

CSCI 1930
Special Topics
varies
More information

CSCI 1980
Independent Study
More information

CSCI 2050 / PHIL 3410
Computer Ethics
This course examines the moral, legal, and social issues raised by computers and electronic information technologies for different stakeholder groups (professionals, users, business, etc.). Students are expected to integrate moral theories and social analysis for addressing such issues as intellectual property, security, privacy, discrimination, globalization, and community.
Prerequisite(s): PHIL 2050
More information

CSCI 2100
Data Structures
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): C- or better in CSCI 1300; passing grade or concurrent enrollment in MATH 1660
More information

CSCI 2190
Computational Problem Solving
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
More information

CSCI 2300
Object-Oriented Software Design
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): C- or better in CSCI 2100
More information

CSCI 2400 / ECE 3217
Computer Architecture
Introduction to the organization and architecture of computer systems, including aspects of digital logic, data representation, assembly level organization, memory systems and processor architectures.
Prerequisite(s): CSCI 1300 and MATH 1660
More information

CSCI 2930
Special Topics
varies
More information

CSCI 2980
Independent Study
More information

CSCI 3100
Algorithms
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
More information

CSCI 3200
Programming Languages
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
More information

CSCI 3250
Compilers
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 2100 and CSCI 2400 / ECE 3217
More information

CSCI 3300
Software Engineering
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
More information

CSCI 3450 / ECE 3225
Microprocessors
Microprocessors/microcomputer structure, input/output. Signals and devices. Computer arithmetic, programming, interfacing and data acquisition.
Prerequisite(s): CSCI 1060 or CSCI 1300; Corequisite CSCI 3451
More information

CSCI 3451 / ECE 3226
Microprocessor Lab
Laboratory experiments to emphasize material covered in CSCI 3450.
Prerequisite(s): CSCI 3450 corequisite
More information

CSCI 3500
Operating Systems
Theory and practice of operating systems, with emphasis on one of the UNIX family of operating systems. File organization and database systems. Focus on a multi-user system in the client-server model. Hands-on experience.
Prerequisite(s): CSCI 2100 and CSCI 2400 / ECE 3217
More information

CSCI 3650 / ECE 4245
Network Programming I
Transmission media; packets, frames, and error-detection; LAN and WAN technologies; routing; Internet architecture and protocols; network performance; host computers; routers; protocol layers; Internet protocol addresses; datagrams; encapsulation; fragmentation; reassembly; Internet Control Message Protocol; network security and legal issues.
Prerequisite(s): CSCI 3500
More information

CSCI 3710
Databases
Fundamentals of Database systems: the relational model, file organization and indexes, relational algebra, structured query language, the entity relationship model, normalization, object databases.
Prerequisite(s): CSCI 2100
More information

CSCI 3760
Artificial Intelligence
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
More information

CSCI 3820
Computer Graphics I
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 and one of MATH 3110 or MATH 3120
More information

CSCI 3910
Internship with Industry
A work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up evaluation required.
Prerequisite(s): Permission
More information

CSCI 3930
Special Topics
More information

CSCI 3980
Independent Study
Prerequisite(s): Permission
More information

CSCI 4130
Automata
The theory of automata and finite state machines. Regular languages and automata. Algebraic coding theory and shift registers. Algebraic matching theory.
Prerequisite(s): CSCI 2100
More information

CSCI 4550
Advanced Operating Systems
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 3500
More information

CSCI 4650
Computer Security
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 2100 required; CSCI 3500 and CSCI 2050 / PHIL 3410 recommended
More information

CSCI 4750
Machine Learning
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
More information

CSCI 4850
High-Performance Computing
Use processor features, multiple cores, memory, graphics cards and clusters to maximize efficiency of computer software. Topics include vectorizing code, cache and memory efficiency, multithreaded programming, GPU programming and distributed programming.
Prerequisite(s): CSCI 2100 required; CSCI 3100 and CSCI 3500 recommended
More information

CSCI 4910
Internship with Industry
A work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up evaluation required.
More information

CSCI 4915
Co-op with Industry
Full-time supervised work experience with an agency, firm, or organization that employs persons in this degree field. Learning plan and follow-up evaluation required.
More information

CSCI 4930
Special Topics
More information

CSCI 4961
Capstone Project I
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): all 2000-level Computer Science requirements and 75 credit hours toward graduation
More information

CSCI 4962
Capstone Project II
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
More information

CSCI 4980
Advanced Independent Study
Prerequisite(s): Permission
More information

CSCI 4WU
Wash U Inter University Course
More information

CSCI 5WU
Wash U Inter University Course
More information

Graduate

CSCI 5001
Object-Oriented Programming
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.
More information

CSCI 5002
Data Structures
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.
More information

CSCI 5030
Principles of Software Development
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.
More information

CSCI 5050
Computing and Society
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.
More information

CSCI 5090
Computer Science Colloquium
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.
More information

CSCI 5100
Algorithms
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.
More information

CSCI 5150
Computational Geometry
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.
More information

CSCI 5200
Programming Languages
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.
Prerequisite(s): CSCI 5030
More information

CSCI 5250
Compilers
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.
Prerequisite(s): CSCI 5030
More information

CSCI 5300
Software Engineering
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.
Prerequisite(s): CSCI 5030
More information

CSCI 5310
Software Architecture
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.
Prerequisite(s): CSCI 5300
More information

CSCI 5320
Software Project Management
A study of key components of project management including project integration, project scope management, project time and cost management, quality management, human resource considerations, communications, risk management, and procurement management.
Prerequisite(s): CSCI 5300
More information

CSCI 5330
Software Quality Assurance
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.
Prerequisite(s): CSCI 5300
More information

CSCI 5350
Human-Computer Interaction
An introduction to the field of Human-Computer Interaction, with a particular focus on the design, implementation, and evaluation of software interfaces.
Prerequisite(s): CSCI 5030
More information

CSCI 5360
Web Technologies
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.
Prerequisite(s): CSCI 5030
More information

CSCI 5500
Operating Systems
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.
More information

CSCI 5550
Computer Networks
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.
More information

CSCI 5650
Computer Security
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.
More information

CSCI 5710
Databases
This course introduces the foundations of database systems: the relational model, file organization and indexes, relational algebra, structured query language, the entity model, normalization, object databases.
More information

CSCI 5750
Machine Learning
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.
More information

CSCI 5830
Image Processing
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.
More information

CSCI 5850
High-Performance Computing
Use processor features, multiple cores, memory, graphics cards and clusters to maximize efficiency of computer software. Topics include vectorizing code, cache and memory efficiency, multithreaded programming, gpu programming and distributed programming.
More information

CSCI 5910
Internship with Industry
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.
Prerequisite(s): Permission
More information

CSCI 5930
Special Topics
More information

CSCI 5960
Capstone Project
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
More information

CSCI 5970
Research Topics
A research experience in computer science guided by faculty.
Prerequisite(s): Permission
More information

CSCI 5980
Graduate Reading Course
More information

CSCI 5990
Thesis Research
Work toward a Master's thesis.
More information

Bioinformatics

BCB 5000
Introduction to Computer Programming for Life Sciences
An accelerated introduction to programming, covering control structures, functions, and classes, as well as data structures including stacks, queues, linked lists, priority queues, dictionaries, trees, and binary search trees. When possible, programming projects will draw upon motivation from biological problems.
More information

BCB 5100
Advanced Scripting for Life Sciences
This course explores intermediate programming techniques, with focus on combining use of various software packages and existing tools to facilitate the gathering, processing, and visualization of biological data sets.
More information

BCB 5200
Introduction Bioinformatics I
The course focuses on the study of nucleotide and peptide sequences and structures from a computational perspective. Topics including sequence alignment, detecting and understanding mutations, gene identification, and structural comparison and prediction.
More information

BCB 5250
Introduction Bioinformatics II
This course focuses on the study of interaction and evolution of biological sequences and structures. Topics include interaction networks, clustering, phylogenic trees and how biological systems change at the genomic metabolic, species and ecological levels.
Prerequisite(s): BCB 5200
More information

BCB 5300
Algorithms in Computational Biology
This course introduces the foundations of algorithmic techniques and analysis, as motivated by biological problems. Topics include dynamic programming, tree and graph algorithms, sequence analysis, hidden markov models. Motivations include sequence alignment, motif finding, gene prediction, and phylogeny.
Prerequisite(s): BCB 5250
More information

BCB 5810
Bioinformatics Colloquium
The course provides students with current information about studies in bioinformatics and computational biology through presentations given by faculty members, students, and invited speakers. Students who enroll for credit must present a 20-30 minute talk as part of the seminar, demonstrating their oral communication skills while presenting technical content.
More information

BCB 5910
Bioinformatics Internship
Internships will include experiences in research and development laboratories of local biotechnology companies, as well as in research laboratories in SLU's departments of Biology, Chemistry, Computer Science, and Mathematics or departments in the School of Medicine.
Prerequisite(s): BCB 5250 and permission
More information

BCB 5930
Special Topics
varies
More information

BCB 5970
Research Topics
This course will provide research experiences in SLU's departments of Biology, Chemistry, Computer Science, and Mathematics or departments in the School of Medicine.
More information

BCB 5980
Graduate Reading Course
More information