Computer Science
- CMP SCI 1250Intro to ComputingPrerequisites: MATH 1030 with a B- or better, or MATH 1045 with B- or better, or MATH 1100 (can be taken concurrently), or MATH 1800 (can be taken concurrently), or a 70% on the proctored UMSL Math Placement obtained at most one year prior to enrollment in this course. This course provides an introduction to the concepts of computation, problem solving, and computer systems. It covers topics such as, fundamental programming constructs, basic data types, and modularization using a modern high level language. Problem solving skills are developed through a progression of programming projects.
- CMP SCI 2250Prog & Data StructuresPrerequisite: CMP SCI 1250. Continuation of CMP SCI 1250. Discusses properties and implementation of abstract data types such as lists, trees, stacks and queues. Introduces procedural and class abstraction, basic program architecture, use of interfaces, modular programming, and file processing.
- CMP SCI 2261Object-Oriented ProgrammingPrerequisites: CMP SCI 2250 (may be taken concurrently). This course introduces object-oriented concepts, terminology, and notation (UML) using Java. It also covers encapsulation, classes, objects, inheritance, and the use of class libraries. Additional topics may include graphical user interfaces, applets, and related tools and technologies.
- CMP SCI 2700Computer Org & ArchitecturePrerequisites: CMP SCI 2250 (can be taken concurrently). This course introduces details of computer systems from architectural and organizational points of view. It covers data representation, basic digital logic circuits, memory types and hierarchies, I/O and storage devices, CPU architectures such as RISC, CISC, parallel, and multi-core.
- CMP SCI 2750System Programming and ToolsPrerequisites: CMP SCI 2250 and CMP SCI 2700 (CMP SCI 2700 can be taken concurrently). This course introduces Linux Operating System and focuses on command-line interactions, the file system, and shell scripting. Additional topics may include source control, symbolic debugging, and system programming in C.
- CMP SCI 3010Web Full Stack DevelopmentPrerequisites: CMP SCI 2250 (can be taken concurrently) or students with familiarity with basic data structures may enroll with consent of instructor. This course provides an overview of website development focusing on development tools along with modern frameworks and libraries. Development tools include Git, GitLab, and Docker. Students will create well-structured, easily maintained, standards-compliant, accessible JavaScript code. Client-side JavaScript libraries may include React and Redux. Server-side JavaScript frameworks include Node with Express. Client-server computing projects are a course requirement. Upon successful completion of the course students will understand how client-side code, server-side code, web servers, and databases function together.
- CMP SCI 3130Design & Analysis AlgorithmsPrerequisites: CMP SCI 2250, MATH 1320, and MATH 3000. This course addresses the design and analysis of fundamental algorithms in computer science. Studies basic sorting algorithms, priority queues, order statistics, search trees, and hash tables. Analysis techniques may involve time and space complexity analysis of both iterative and recursive algorithms, analysis of algorithm correctness, and amortized complexity analysis. Additional topics may include data compression, string manipulation, greedy algorithms, dynamic programming, and graph traversal.
- CMP SCI 3702Intro Cyber TheatsPrerequisites: CMP SCI 2250. This course introduces the importance of cybersecurity and covers its various components. Topics may include different types of malware, phishing, password attacks, spoofing, efficient encryption algorithms, firewalls, intrusion prevention/detection systems, and honeypots. Credit cannot be granted for both CMP SCI 3702 and CMP SCI 5702.
- CMP SCI 3990Undergrad Internship in CSPrerequisites: Consent of instructor. This course is a computer science internship that provides a student field experience in an organization related to the profession. To be enrolled, students must be employed in an internship or co-op program and find an instructor to supervise the experience. Internship activities may vary by site, but will often require end-of-semester reporting. Typically 1 credit can be earned for about 100 work hours. A maximum of 3 credit hours of CMP SCI 3990 can be counted as major electives and a maximum of 6 credit hours of CMP SCI 3990 and CMP SCI 4880 combined can be counted as major electives.
- CMP SCI 4200Python for DSPrerequisites: CMP SCI 1250 and (MATH 1100 or MATH 1800) and (ANTHRO 3220/SOC 3220 or BIOL 4122 or CRIMIN 2220 or ECON 3100 or MATH 1320 or POL SCI 3000 or PSYCH 2201). This course covers programming using the Python language and related libraries. The course explores problem solving using Python's support of procedural, object-oriented, and functional approaches to programming. Topics may include NumPy arrays, visualization, Pandas DataFrames, and selected functions from statistical and scientific packages.
- CMP SCI 4220Intro iOS AppsPrerequisites: CMP SCI 2261 or INFSYS 3806 or graduate standing. This course will use Swift for building iOS apps. It also introduces Xcode, Interface Builder, basic design patterns like MVC and delegation, and core libraries for Swift and iOS. Additional topics may include network communication, data persistence, basic animation, and mapping. This is a project-oriented class that will require significant use of a Mac with Xcode installed.
- CMP SCI 4250Programming LanguagesPrerequisites: CMP SCI 2261 and CMP SCI 3010, or graduate standing. This course studies the principles, approaches, and trade-offs in modern programming languages, including a comparative study of syntax, semantics, and pragmatics. It also examines major programming paradigms: object-oriented, imperative, functional and logic.
- CMP SCI 4732Intro to Cryptography SecurityPrerequisites: MATH 1100 or MATH 1800 or consent of instructor. This course provides an introduction to cryptography as it applies to computer security. It describes modern cryptographic systems and potential attacks on against these systems. Topics may include both symmetric and asymmetric encryption algorithms, authentication, key exchange protocols, onion networks and blockchain technology, as well as potential attacks on these systems. Credit cannot be granted for more than one of CMP SCI 4732, CMP SCI 4780, and CMP SCI 5732.
- CMP SCI 4880Individual Studies in Comp SciPrerequisites: Consent of instructor. This course allows a student to pursue individual studies under the supervision of a faculty member. Topics may include learning new technology, software development, or participation in research activities. Students must arrangements for an instructor to supervise their work. A maximum of 6 credit hours of CMP SCI 3990 and CMP SCI 4880 combined can be counted as major electives.
- CMP SCI 5702Cyber Threats and DefensePrerequisites: Graduate standing. This course introduces the importance of cybersecurity and covers its various components. Topics may include different types of malware, phishing, password attacks, spoofing, efficient encryption algorithms, firewalls, intrusion prevention/detection systems, and honeypots. Credit cannot be granted for both CMP SCI 3702 and CMP SCI 5702.
- CMP SCI 5732Cryptography for Comp SecurityPrerequisites: Graduate standing. This course provides an introduction to cryptography as it applies to computer security. It describes cryptographic code-making and code-breaking, and how they are integrated within larger security systems. Topics include symmetric encryption algorithms like AES, asymmetric encryption using prime number factorization and elliptic curves, message authentication codes, key exchange protocols and attacks on all these systems. Additional topics may include onion networks and blockchain technology, as well as possible attacks on those systems. Credit cannot be grant for more than one of CMP SCI 4732, CMP SCI 4780, and CMP SCI 5732.
- CMP SCI 5880Computer Sci Indep ProjPrerequisites: Graduate standing and consent of instructor. This course offers the student an opportunity to work on a supervised project, individually or in a group. A maximum of 6 hours can be counted toward the M.S. in Computer Science program from a combination of CMP SCI 5880, CMP SCI 5900, and CMP SCI 6900.
- CMP SCI 5900Grad Internship in Comp SciPrerequisites: Consent of instructor. This course is an internship that provides a student field experience in an organization related to the profession. To be enrolled, students must be employed in an internship or co-op program. If an instructor is not named, the student must find an instructor to supervise the internship. Internship activities may vary by site, but will require some reporting. Typically 1 credit can be earned for about 100 work hours. Only up to 3 hours total can be counted toward the M.S. in Computer Science program, and at most 6 hours can be counted from a combination of CMP SCI 5880, CMP SCI 5900, and CMP SCI 6900.
- CMP SCI 6900Thesis in Computer SciencePrerequisites: Completion of at least 12 graduate credits and approval of research topic by thesis advisor. This course is designed for students intending to pursue a thesis as part of their M.S. in Computer Science program. A maximum of 6 hours can be counted toward the program from a combination of CMP SCI 5880, CMP SCI 5900, and CMP SCI 6900.
- CMP SCI 7990Ph.D. Dissertation ResearchPrerequisites: Completion of comprehensive examinations. This course is used to pursue research work for a Ph.D. dissertation under the supervision of a faculty advisor. This course is available only to the students pursuing a Ph.D. under the Computer Science option.