Computer Science
- CMP SCI 1000Computer Science ExperiencesThis course is for recently declared undergraduate students majoring in Computer Science or Computing Technology. Topics may include resources that are available on campus and in the department, career opportunities, choosing the right degree, and exploration of concepts, skills and practices that are essential for successful careers. This course should be taken by freshmen and transfers within the first two semesters of declaring the major.
- 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 3411Intro to Data VisualizationPrerequisites: CMP SCI 1250. This course introduces students to the principles of effective data visualization. The course includes an introduction to data cleaning and analysis. Plotting tools such as Tableau, Matplotlib, and D3.js are also introduced. Topics covered may include graphical excellence, log scale, color, heat maps, network visualization, plotting scientific data, interactive plots, and plotting live stream of data. Credit cannot be granted for both CMP SCI 3411 and CMP SCI 5411.
- 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 3780Software SecurityPrerequisites: CMP SCI 2261, CMP SCI 2750, and CMP SCI 3010. This course introduces the basic software security principles and pitfalls, including topics such as buffer, integer and string problems, runtime errors, SQL and command injection. Additional topics may include data protection, secure file access, password and network security.
- 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 4010Web Dev with JavaPrerequisites: CMP SCI 3010 and either CMP SCI 2261 or INFSYS 3806; or graduate standing. This course covers fundamental topics of Java EE technology. Topics start with servlets and JSP. Additional topics may include JDBC, expression language, JSTL, security, Maven, Hibernate ORM framework, MVC pattern, REST web services, testing and source control for Java web applications.
- 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 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 4280Program Translation ProjectPrerequisites: CMP SCI 2700, CMP SCI 2750, CMP SCI 3130, and CMP SCI 4250, or graduate standing. This course uses program translation as an example of a complex task, and focuses on managing and developing solutions for such complex programming tasks using modular incremental development and testing while applying proper standards. Translation topics may include finite automata, BNF, language semantics, and various translation models.
- CMP SCI 4300Introduction to AIPrerequisites: CMP SCI 3130. This course provides an introduction to artificial intelligence. The list of topics may include search, planning, knowledge-based reasoning, probabilistic inference, machine learning, natural language processing, and practical applications. Credit cannot be granted for both CMP SCI 4300 and CMP SCI 5300.
- CMP SCI 4340Intro to Machine LearningPrerequisites: CMP SCI 4342, or CMP SCI 2261 and CMP SCI 3130, or consent of instructor. This course provides an introduction to machine learning principles, algorithms and applications. Topics may include computational learning theory, VC Dimension, generalization, classification, regression, regularization, validation, and reinforcement learning. Credit cannot be granted for both CMP SCI 4340 and CMP SCI 5340.
- CMP SCI 4410Intro Computer GraphicsPrerequisites: CMP SCI 2250 and MATH 2450. This course covers the theoretical foundation and algorithms for computer graphics. Students learn the basics of graphics programming for modeling, rendering, and animation of 2D and 3D objects, using standard graphics API. A brief discussion of special graphics hardware, such as GPU, may be included. Credit cannot be granted for both CMP SCI 4410 and CMP SCI 5410.
- CMP SCI 4500Intro to Software ProfessionPrerequisites: CMP SCI 2261, CMP SCI 3010, and MATH 3000. This course focuses on software development and on the skills required for success in the software profession. Topics related to software development may include software process, models and views, software architectures, documentation, and testing strategies. Topics related to the profession may include ethics, licensing, copyright, trademarks, and professional conduct. Individual and group projects, research, and presentations may be required in this capstone course.
- CMP SCI 4610Database Mgmt SystemsPrerequisites: CMP SCI 3010 and MATH 3000; or graduate standing. This course focuses on database theory and applications, with emphasis on the relational model. Topics include database design, modeling, file systems, indexing, integrity constraints, relational algebra, normalization, transaction processing, and concurrency control. Students are exposed to emerging DBMS technologies and applications. Several programming projects will be required using a popular SQL server.
- CMP SCI 4700Computer ForensicsPrerequisites: CMP SCI 2750 or graduate standing. This course explores topics and methodologies for examining digital evidence, along with some principles of the investigative process. Topics may include memory, file system, operating system, network, and mobile device forensics. This course addresses both theory and hands-on aspects for conducting digital forensic examinations.
- CMP SCI 4730Computer Networks & CommPrerequisites: CMP SCI 2750 and MATH 1320, or graduate standing. The course provides an understanding of computer network fundamentals, design, management and security through the layered Internet architecture and the TCP/IP protocol stack. The topics may include common networking techniques and protocols, as well as more advanced concepts like cloud computing, software-defined networks, and virtual network functions.
- CMP SCI 4750Intro to Cloud ComputingPrerequisites: CMP SCI 2750. This course provides an introduction to development and deployment of applications in the cloud space. Touches on different aspects of cloud computing such as IaaS, PaaS, and SaaS. Includes significant discussion on legal and security aspects of clouds in the marketplace. May also include public, private, and hybrid clouds, and Internet of Things. Credit not granted for both CMP SCI 4750 and CMP SCI 5750.
- CMP SCI 4760Operating SystemsPrerequisites: CMP SCI 2750 and CMP SCI 3130; or graduate standing. This course covers the structure of a generic operating system, considering in detail the algorithms for interprocess communication, process scheduling, resource management, memory management, file systems, and device management. It presents examples from contemporary operating systems and requires practical projects implemented within a modern operating system or simulator environment.
- CMP SCI 4794Intro Security of IoT SystemsPrerequisites: CMP SCI 4730 or consent of instructor. This course covers the cutting-edge techniques on the emerging edge cloud and wireless/mobile Internet of Things (IoT) systems. It covers the IoT reference architecture, integrated IoT security architecture, major threats and vulnerabilities with the IoT devices and edge cloud, and defense mechanisms. It includes hands-on labs on both the vulnerabilities and defense of the systems. Credit cannot be granted for both CMP SCI 4794 and CMP SCI 5794.
- 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 5130Adv Data Strcts & AlgorPrerequisites: Graduate standing in Computer Science. This course covers the design of efficient data structures and algorithms, as well as an advanced analysis of the time and space complexities of iterative and recursive algorithms. Student will learn a variety of techniques including dynamic programming, greedy algorithms, various graph algorithms, and NP-completeness and approximation algorithms.
- CMP SCI 5300Artificial IntelligencePrerequisites: Graduate standing. This course provides an introduction to artificial intelligence. The list of topics may include search, planning, knowledge-based reasoning, probabilistic inference, machine learning, natural language processing, and practical applications. Credit cannot be granted for both CMP SCI 4300 and CMP SCI 5300.
- CMP SCI 5340Machine LearningPrerequisites: Graduate standing in Computer Science/Cybersecurity (Computer Science option) or CMP SCI 4342 or CMP SCI 5342 or consent of the instructor. This course provides an introduction to machine learning principles, algorithms and applications. Topics may include computational learning theory, VC dimensions, generalization, classification, regression, regularization, validation, and reinforcement learning. Credit cannot be granted for both CMP SCI 4340 and CMP SCI 5340.
- CMP SCI 5410Computer GraphicsPrerequisites: Graduate standing in Computer Science. This course covers the theoretical foundation and algorithms of computer graphics. Students learn the basics of graphics programming for modeling, rendering, and animation of 2D and 3D objects, using standard graphics API. A brief discussion of special graphics hardware, such as GPU, may be included. Credit cannot be granted for both CMP SCI 4410 and CMP SCI 5410.
- CMP SCI 5411Data VisualizationPrerequisites: Graduate standing. This course introduces students to the principles of effective data visualization. The course includes an introduction to data cleaning and analysis. Plotting tools such as Tableau, Matplotlib, and D3.js are also introduced. Topics covered may include graphical excellence, log scale, color, heat maps, network visualization, plotting scientific data, interactive plots, and plotting live stream of data. Students may not receive credit for both CMP SCI 3411 and CMP SCI 5411.
- CMP SCI 5500Software EngineeringPrerequisite: Graduate standing. Introduces software engineering as a discipline, discusses stages of the software life cycle, compares development models such as waterfall, prototyping and incremental/iterative, covers requirements analysis, effort and cost estimation, compares structured and object-oriented analysis and design methods. Discusses verification/validation, quality assurance, software reliability, testing methods, maintenance, documentation, project management and team structure, metrics, and available tools.
- 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 5710Modern ComputingPrerequisites: Graduate standing. This course covers technical concepts and tools in a modern computing environment such as: file systems, command-line operations and productivity tools, communication with servers, software installation and deployment, basic data representation and computer organization/memory layers, virtualization and cloud.
- CMP SCI 5750Cloud ComputingPrerequisites: Graduate standing. Provides an introduction to development and deployment of applications in the cloud space. Touches on different aspects of cloud computing such as IaaS, PaaS, and SaaS. Includes significant discussion on legal and security aspects of clouds in the marketplace. May also include public, private, and hybrid clouds, and Internet of Things. Credit not granted for both CMP SCI 4750 and CMP SCI 5750.
- CMP SCI 5794Security of IoT SystemsPrerequisites: CMP SCI 4730 or consent of the department. This course covers the cutting-edge techniques on the emerging edge cloud and wireless/mobile Internet of Things (IoT) systems. It covers the IoT reference architecture, integrated IoT security architecture, major threats and vulnerabilities with the IoT devices and edge cloud, and defense mechanisms. It includes hands-on labs on both the vulnerabilities and defense of the systems. Credit cannot be granted for both CMP SCI 4794 and CMP SCI 5794.
- 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 6340Genetic ProgrammingPrerequisites: CMP SCI 5320. This course provides an in-depth exploration of Genetic programming, including advanced concepts such as scalability, evolution of modularity and regularity, and constrained evolution with CGP, STGP, or CFG-based GP. It may be reading, research, or application oriented.
- 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.