Campus Address: 311 Express Scripts Hall
Web Site: http://www.umsl.edu/mathcs
Main Number: 314-516-5743
Fax Number: 314-516-5400

The Computer Science programs are offered through the Department of Mathematics and Computer Science.  To view faculty, degree information including four year plans, please see the department page in the Bulletin.

General Information

Degrees and Areas of Concentration

The Department of Mathematics and Computer Science offers undergraduate and graduate degree programs in Computer Science, a minor, and a number of certificates.

At the undergraduate level, the department offers the B.S. in Computer Science and the B.S. in Computing Technology (pending CBHE approval). The department also offers a minor in Computer Science, a Certificate in Internet and Web, a Certificate in Mobile and Ubiquitous Computing, and in cooperation with the Department of Information Systems, a joint Certificate in Cybersecurity. A Certificate in Data Sciences is pending MDHE approval.

At the graduate level, the department offers a Master of Science (M.S.) degree in Computer Science and a Doctor of Philosophy (Ph.D.) in Mathematical and Computational Sciences – with a Computer Science option.  The department also offers, in cooperation with the Department of Information Systems, a joint Graduate Certificate in Cybersecurity.

Undergraduate Programs Overview

The B.S. in Computer Science curriculum provides mathematical and computing foundations, a number of possible specializations, and an array of technologies and tools. The foundations allow further studies in the future, if desired, and provide for a better understanding of tradeoffs between different approaches and solutions to a given problem. The specializations and tools allow direct access to many interesting career paths. In addition, the curriculum emphasizes written and oral communication skills, professional ethics, and both individual and group work. Given the ever-widening impact of digital technology on daily life, our Computer Science graduates enjoy significant employment opportunities.

The computing foundations are provided by a range of standard Computer Science courses such as programming languages, internet technologies, operating systems, and algorithm design. The specializations are offered through a number of available electives in areas such as cybersecurity, mobile computing and app development, AI, and data mining. These electives can be packaged into one of the existing certificates.

The Certificate in Internet and Web is designed to provide a broad training in technologies related to the Internet and Web, with flexibility allowing a student to satisfy specific interests.

The Certificate in Mobile and Ubiquitous Computing is designed to provide training in technologies and framework for mobile apps and computing.

The Certificate in Cybersecurity is designed to provide basic training in emerging areas of information, data, and network security.

A Certificate in Data Sciences (pending) is designed to provide computing and statistical foundations for work with big data and data analytics.

Dual Programs

The Department offers a B.S./M.S. dual degree program in Computer Science for students with strong academic records.  The program is designed to provide an opportunity for strong undergraduate majors to start earning graduate work credit before completing their undergraduate degree and to shorten, or accelerate, the time required to earn their graduate degrees.

Graduate Programs Overview

The M.S. degree in Computer Science program provides advanced computing foundations and also emphasizes practical aspects of the field. Our graduates have good understanding of the software process and its challenges, computers systems and their parts, algorithms and tradeoffs in  their applications, and be exposed to a wide range of technologies. They will also be prepared for team work, independent research, and technical reporting and presentations.

The Ph.D. program in Mathematical and Computational Sciences has an option in Computer Science. Students choosing this option will develop a breadth of abilities in the core areas of computer science at the graduate level. They will gain a depth of ability in contemporary research in their chosen subfield of Computer Science, and will be able to pursue independent research in their area of specialization.

Students may enroll in any of these graduate programs on a part-time basis.

Career Outlook

A degree in Computer Science prepares well-motivated students for interesting and fulfilling careers. Our graduates find positions in industry, government, and education. The demand for Computer Science graduates is high and it is projected to increase in the future.

Graduates in Computer Science from UMSL are located throughout the country, and they also have a strong local presence. They have careers in banking, health care, engineering and manufacturing, law, finance, and public service. Many are working in areas such as systems management, information systems and data management, scientific computing, and scientific positions in the armed services. Others have careers in education, especially at secondary and higher levels.

Department Scholarships

The Department of Mathematics and Computer Science offers many merit and need based scholarships available to department majors.

The Alumni Scholarship is a monetary award for outstanding undergraduate students open to all junior and senior department majors.

The Edward Z. Andalafte Memorial Scholarship is a monetary award for outstanding undergraduate department majors at the sophomore level or higher.

The Raymond and Thelma Balbes Scholarship in Mathematics is a monetary award for students at the sophomore level or higher who are pursuing a degree in mathematics, have an overall GPA of at least 3.0 and a GPA of at least 3.2 in mathematics and who have completed three semesters of calculus.

The Joseph M. and Mary A. Vogl Scholarship in Mathematics is a need based monetary award for mathematics majors.

The Computer Science Scholarship is a monetary award for outstanding computer science majors with preference given to freshman and sophomore students. Applicants must have a grade point average of 3.5 or higher in courses taken in the department.

The Boeing Company Scholars Program in Computer Science is a monetary award for full-time (at least 12 hours) upper-level undergraduate students in computer science. Recipients must have a minimum GPA of 3.2 and must maintain a GPA of 3.0. Preference will be given to traditionally underrepresented populations.

Undergraduate Studies

General Education Requirements

All majors must satisfy the university and appropriate school or college general education requirements. All mathematics courses may be used to meet the university’s general education breadth of study requirement in natural sciences and mathematics.

Satisfactory/Unsatisfactory Restrictions

Majors in mathematics and computer science may not take mathematical sciences or related area courses on a satisfactory/unsatisfactory basis. Students considering graduate study should consult with their advisers about taking work on a satisfactory/unsatisfactory basis.

Degree Requirements

All courses of the department presented to meet the degree requirements must be completed with a grade of C- or better. At least four courses numbered 3000 or above must be taken in residence. Students must have a 2.0 grade point average in the mathematical sciences courses completed.

Students enrolling in introductory mathematics courses should check the prerequisites to determine if a satisfactory score on the Mathematics Placement Test is necessary. The dates on which this test is administered are given on the department’s website. Placement into introductory courses assumes a mastery of two years of high school algebra.

A minimum grade of C- is required to meet the prerequisite requirement for any course except with permission of the department.

Note: Courses that are prerequisites for higher-level courses may not be taken for credit or quality points if the higher-level course has been satisfactorily completed.

Many students are qualified, as a result of having studied calculus in high school, to begin their major with MATH 1900, Analytic Geometry and Calculus II, or MATH 2000, Analytic Geometry and Calculus III. These students are urged to consult with the department before planning their programs. Credit for MATH 1800, Analytic Geometry and Calculus I, will be granted to those students who complete MATH 1900 with a grade of C- or better.

Similarly, students who are ready to begin their computer science studies with CMP SCI 2250, Programming and Data Structures, will be granted credit for CMP SCI 1250, Introduction to Computing, once they complete CMP SCI 2250 with a grade of C- or better.

Declaring the Computer Science Major

Students seeking to major in computer science are first designated as “pre-computer science majors” until they have completed CMP SCI 2750 or equivalent course. Upon successful completion of this course with a grade of C- or better, students will be allowed to declare computer science as their major. This course must be completed successfully within two attempts.

Degree Requirements in Computer Science

Candidates for the B. S. Computer Science degree must complete the following work:

1) Computer Science Core
CMP SCI 1250Introduction To Computing3
CMP SCI 2250Programming And Data Structures3
CMP SCI 2261Object-Oriented Programming3
CMP SCI 2700Computer Organization and Architecture3
CMP SCI 2750System Programming and Tools3
CMP SCI 3010Web Programming3
CMP SCI 3130Design and Analysis of Algorithms3
CMP SCI 4250Programming Languages3
CMP SCI 4280Program Translation3
CMP SCI 4500Introduction to the Software Profession3
CMP SCI 4760Operating Systems3
2) Computer Science Electives
Select five more elective computer science courses, numbered above 3000.15
3) Mathematics and Statistics
MATH 1320Applied Statistics I3
MATH 1800Analytic Geometry And Calculus I5
MATH 1900Analytic Geometry And Calculus II5
MATH 2450Elementary Linear Algebra3
MATH 3000Discrete Structures3
4) Additional Skills
ENGL 3130Technical Writing3
Total Hours70

There are no related area requirements for majors in Computer Science

BS and MS Dual Degree in Computer Science

The Integrated BS/MS ("2+3") dual degree program involves dual credit for qualified undergraduate Computer Science students.  It allows the students to concurrently earn credit for some graduate courses while working on their undergraduate degree, reducing the total hours needed for the subsequent MS degree by up to 12 credit hours.

Entry Requirements

Undergraduate majors can apply for provisional admission to this program if:

  1. They have completed at least 60 credit hours of coursework.
  2. Their overall GPA is 3.0 or higher.
  3. Non-CS majors must at the same time become CS majors.

Upon acceptance to the program in the provisional status, the student continues to work toward his/her undergraduate degree in computer science.

After completion of a minimum of 90 hours and no more than 30 hours away from the undergraduate degree, a provisionally admitted student applies for formal admission to the graduate program.  At this point, the student must meet the entry requirements for admission to the M.S. degree in Computer Science.

Degree Requirements

After acceptance into the program, the student continues to complete his/her undergraduate degree.  The student is reclassified as a graduate student from the next semester and must pay graduate fees. The student will be assigned a graduate adviser to help optimize the transition to the graduate program.  The student continues taking the undergraduate courses but is also allowed to take courses reserved for graduate students.  The student completes all the courses to fulfill the requirements to complete his/her M.S. degree in Computer Science – but must also complete the undergraduate requirements.  Up to 12 credit hours can be counted towards both the undergraduate and graduate degrees, substantially reducing the  hours needed to complete the graduate program by itself.

A student may file for and receive the undergraduate degree at any time when all the requirements are completed, before or in the same semester in which the Master's degree is completed. A student must still complete all the requirements to get a B.S. degree, regardless of whether the student files for the degree or not.  A student may choose to finish the studies just with a B.S.

Bachelor of Science in Computing Technology

(pending CBHE approval)

Candidates for the B. S. Computing Technology degree must complete the following courses:

Core
CMP SCI 1250Introduction To Computing3
CMP SCI 2250Programming And Data Structures3
CMP SCI 2261Object-Oriented Programming3
CMP SCI 2700Computer Organization and Architecture3
CMP SCI 2750System Programming and Tools3
CMP SCI 3010Web Programming3
CMP SCI 3200.NET Framework3
CMP SCI 3780Software Security3
CMP SCI 4010Advanced Web Development with Java3
CMP SCI 4500Introduction to the Software Profession3
CMP SCI 4610Database Management Systems3
Computer Science Electives
Select five more elective computer science courses, numbered above 300015
Mathematics and Statistics
MATH 1320Applied Statistics I3
MATH 1100Basic Calculus3-5
or MATH 1800 Analytic Geometry And Calculus I
MATH 2300Introduction to Discrete Structures3
or MATH 3000 Discrete Structures
Additional Skills
ENGL 3130Technical Writing3
Total Hours60-62

Minor Requirements

The department offers minors in computer science, mathematics, and statistics. All courses presented for any of these minors must be completed with a grade of C- or better.

Minor in Computer Science

The requirements for the minor are:

CMP SCI 1250Introduction To Computing3
CMP SCI 2250Programming And Data Structures3
Select three additional computer science courses numbered 2000 or above. 9
Total Hours15

A minimum of two computer science courses numbered above 2000 must be taken in residence in the Department of Mathematics and Computer Science at UMSL.

Certificate in Data Science

(pending CBHE approval)

The certificate program provides basic training on skills required for working in growing and popular fields involving data and data analysis. It provides both statistical and computational background while also allowing to focus on specific technologies.

Required Courses:

CMP SCI 4340Introduction to Machine Learning3
CMP SCI 4342Introduction to Data Mining3
MATH 4200Mathematical Statistics I3
MATH 4210Mathematical Statistics II3
Choose two courses from the following:6
Introduction to Intelligent Web
Introduction To Artificial Intelligence
Database Management Systems
Bayesian Statistical Methods
Total Hours18

Residency requirement: of the required six courses at least five must be taken at the University of Missouri – St. Louis. Elective courses may be substituted with the permission of the program director. For more information, contact the department chair or email info@arch.umsl.edu.

Admission

Applicants must meet the general admission requirements of the Graduate School, described elsewhere in this Bulletin. Additional admission requirements for specific programs are listed below.

Master of Science in Computer Science

Candidates for the M.S. degree in Computer Science must complete 30 hours of course work, subject to the Graduate School regulations. Of these, at least 18 hours must be numbered 5000 or above, with at least one course numbered 6000 or above, chosen with the prior approval of the Graduate Director. All courses numbered below 5000 must be completed with grades of at least B-. Outside computer science, up to 6 hours of related course work is allowed upon permission of the Graduate Director.

Students must satisfy all of the following core requirements:

CMP SCI 4760Operating Systems3
CMP SCI 4250Programming Languages3
CMP SCI 5700Computer Systems3
CMP SCI 5500Software Engineering3
CMP SCI 5130Advanced Data Structures And Algorithms3
Total Hours15

Waiving or substituting for a specific requirement can be done on the basis of prior course work or experience at the discretion of the Graduate Director, but it will not reduce the total hours required for the degree.

Additionally, students must attend at least five different seminars or colloquium presentations in the department.

Thesis Option

Students may choose to write an M.S. thesis under the direction of a faculty member in the Department of Mathematics and Computer Science. A thesis is not, however, required for this degree. A student who wishes to write a thesis should enroll in 6 hours of CMP SCI 6900,Thesis. Students writing an M.S. thesis must defend their thesis in an oral exam administered by a committee of three department members which includes the thesis director.

Courses

CMP SCI 1011 Introduction to the Internet and World Wide Web: 3 semester hours

Intended for any student wishing to utilize the Internet and World Wide Web more effectively. Topics include networking basics, the Internet and World Wide Web, browsers, search engines, Web Services, utilities, tools, online privacy and security. Students will learn to develop a personal web page using skills acquired in the course.

CMP SCI 1012 Learning to Program Using Virtual Worlds: 3 semester hours

Introduces modern programming principles without requiring the knowledge of a traditional programming language. Instead, this course utilizes a novel graphical approach that enables the student to create, populate, and manipulate virtual 3-dimensional worlds which resemble video games. The development of these worlds allows students to gain direct experience and skills in using computers to solve problems. Students will create worlds of varying complexity.

CMP SCI 1250 Introduction To Computing: 3 semester hours

Prerequisites: MATH 1030 with B-or better, or MATH 1100, or MATH 1800, or a 70% on the proctored UMSL ALEKS 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 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 2250 Programming And Data Structures: 3 semester hours

Prerequisite: 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 2261 Object-Oriented Programming: 3 semester hours

Prerequisite: CMP SCI 2250. Introduces object-oriented concepts, terminology, and notation (UML) using Java. 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 2700 Computer Organization and Architecture: 3 semester hours

Prerequisite: CMP SCI 2250. Introduces details of computer systems from architectural and organizational points of view. 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 2750 System Programming and Tools: 3 semester hours

Prerequisites: CMP SCI 2250 and CMP SCI 2700 (CMP SCI 2700 may be taken currently). This course covers systems programming, scripting, libraries, utilities, and development tools. Additional programming topics include piping, binary files, exception handling, command-line arguments and symbolic debugging. This course also explores tools available in the Unix/Linux environments.

CMP SCI 3010 Web Programming: 3 semester hours

Prerequisites: CMP SCI 2261 (or concurrent enrollment). This course provides a survey of current Web technologies including markup languages (such as HTML/XHTML, CSS, XML), client side languages (such as JavaScript), server side languages (such as PERL, PHP), and Web protocols. Client-server computing projects are a course requirement.

CMP SCI 3130 Design and Analysis of Algorithms: 3 semester hours

Prerequisites: 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 3200 .NET Framework: 3 semester hours

Prerequisites: CMP SCI 3010. This course introduces the .NET framework and related languages and technologies. Topics will include Visual Studio and C# for OOP and web applications. Additional topics may include ASP.NET with MVC, data access, and windows communication.

CMP SCI 3710 Assembly Language Programming: 3 semester hours

Prerequisite: CMP SCI 2700. Explores machine architecture concepts and principles through a study of assembly language programming. Topics covered include integer and floating point arithmetic, procedures, conditional processing, strings, macros, and interfaces to high level languages. Programming projects using a commercially available assembly language will be required.

CMP SCI 3780 Software Security: 3 semester hours

Prerequisites: 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 4010 Advanced Web Development with Java: 3 semester hours

Prerequisites: CMP SCI 2261 and CMP SCI 3010; or graduate standing. This course covers more advanced Java topics, along with related concepts and technologies for Web development. Topics may include database connectivity, multi threading, security, networking, MVC pattern, testing and source control for Java applications, and server-side topics such as servlets and web servers.

CMP SCI 4012 Introduction to Enterprise Web Development: 3 semester hours

Prerequisites: CMP SCI 4010. This course covers design and implementation issues for enterprise web development, and some popular advanced technologies. Topics include MVC and persistence frameworks, such as Spring and Hibernate. Other topics may include Java Web services, EJB, messaging standards such as JMS, and Java EE design patterns. Students will develop enterprise-level web application projects. Credit cannot be earned for both CMP SCI 4012 and CMP SCI 5012.

CMP SCI 4020 Introduction to Android Apps: Android Fundamentals: 3 semester hours

Prerequisites: CMP SCI 4010, or consent of the instructor. This course covers the fundamental programming principles, software architecture and user experience considerations underlying handheld software applications and their development environments. Involves in-depth, hands-on examples, implemented on the Android Platform, and discussion of security. Credit not granted for both CMP SCI 4020 and CMP SCI 5020.

CMP SCI 4030 Introduction to Intelligent Web: 3 semester hours

Prerequisites: CMP SCI 2261, CMP SCI 2750, CMP SCI 3010, and CMP SCI 3130. Covers the application of artificial intelligence and other modern techniques to help construct, navigate, and experience the Web. Topics may include retrieval models, classification, mining, association, topology, and indexing algorithms such as PageRank and HITS. Credit cannot be earned for both CMP SCI 4030 and CMP SCI 5030.

CMP SCI 4140 Theory Of Computation: 3 semester hours

Prerequisites: CMP SCI 3130 or graduate standing. This course provides an introduction to the theory of computation. It describes basic computational models, such as finite state machines, pushdown automata, Turing machines and grammars. It also covers the concept of nondeterministic computation and the relationships between different computational models. Additionally it discusses decidability, reducibility, and classification of problems into complexity classes based on their time and space complexity, such as P, NP, and PSPACE.

CMP SCI 4220 Introduction to iOS Programming and Apps: 3 semester hours

Prerequisites: CMP SCI 2261 and CMP SCI 2750; or graduate standing. This course covers Objective-C and uses it for building iOS apps. It also introduces Xcode, Interface Builder, basic architectural patterns for MVC such as action, delegation, and outlets. Additional topics may include online services, mapping, persistence with core data, and single and multiple views.

CMP SCI 4222 iOS Apps: 3 semester hours

Prerequisites: CMP SCI 4220 or consent of the instructor. This course focuses on building more sophisticated apps using Objective-C and the scripting language Swift. May include networking such as web services, Bluetooth and wifi connectivity, graphics and animation in 2-d and 3-d, autolayouts, OpenGL, advanced data sources such as plist and core data, source control and unit testing. May also discuss security topics. Credit not granted for both CMP SCI 4222 and CMP SCI 5222.

CMP SCI 4250 Programming Languages: 3 semester hours

Prerequisites: 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 4280 Program Translation: 3 semester hours

Prerequisites: CMP SCI 2700, CMP SCI 2750, CMP SCI 3130, and CMP SCI 4250, or graduate standing. This course focuses on methods, techniques, and mechanisms used to create the abstraction from high level programming to machine level execution and also requires an individual semester long project.

CMP SCI 4300 Introduction To Artificial Intelligence: 3 semester hours

Prerequisites: CMP SCI 2261, CMP SCI 2750, and 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 4340 Introduction to Machine Learning: 3 semester hours

Prerequisites: CMP SCI 2261, CMP SCI 2750 and CMP SCI 3130. Provides an introduction to machine learning in the context of applications such as data mining, natural language processing, and adaptive computer systems. The course reviews several supervised, unsupervised, and reinforcement machine learning techniques such as naive Bayes networks, clustering, and decision trees. Selected concepts in computational learning theory may also be covered. Credit cannot be granted for both CMP SCI 4340 and CMP SCI 5340.

CMP SCI 4342 Introduction to Data Mining: 3 semester hours

Prerequisites: CMP SCI 2261 and CMP SCI 3130. This course provides an introduction to data mining principles, algorithms and applications. Topics may include data preprocessing, data transformation, similarity and dissimilarity measures, data representation, classification techniques, association analysis, cluster analysis, regression, dimension reduction, and anomaly detection. Credit not granted for both CMP SCI 4342 and CMP SCI 5342.

CMP SCI 4410 Introduction to Computer Graphics: 3 semester hours

Prerequisites: 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 4420 Introduction to Digital Image Processing: 3 semester hours

Prerequisites: MATH 2450, CMP SCI 2750, and CMP SCI 3130. This course focuses on image analysis and visual perception. Students learn data structures and algorithms for image processing, region and texture analysis, image filtering, edge detection, contour following, and image enhancement in both spatial and frequency domain. Other topics may include color processing, coding for storage, retrieval, transmission, and image restoration. Credit cannot be granted for both CMP SCI 4420 and CMP SCI 5420.

CMP SCI 4500 Introduction to the Software Profession: 3 semester hours

Prerequisites: CMP SCI 2261, CMP SCI 2750, CMP SCI 3010, and CMP SCI 3130. 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 4610 Database Management Systems: 3 semester hours

Prerequisites: 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 4700 Computer Forensics: 3 semester hours

Prerequisites: CMP SCI 2700, CMP SCI 2750, and CMP SCI 3010; or graduate standing. This course explores topics and methodologies for examining digital evidence, along with some principles of the investigative process. Includes memory, file system, operating system, network, and mobile device forensics. Addresses both theory and hands-on aspects for conducting digital forensic examinations.

CMP SCI 4710 Mobile And Ubiquitous Computing: 3 semester hours

Prerequisites: CMP SCI 2261 or graduate standing. This course provides an introduction to the rapidly developing field of ubiquitous computing while at the same time exploring more focused topics in the three main categories of this field, namely systems, experience, and sensors. Explores setting up the infrastructure, privacy issues, evaluation of field applications, internationalization, user interfaces, and geolocation analysis.

CMP SCI 4730 Computer Networks and Communications: 3 semester hours

Prerequisites: CMP SCI 2750 and MATH 1320; or graduate standing. This course provides a broad overview of computer networks and communications. Covers the fundamental principles and protocols across the whole layering structure of the Internet protocol stack. A top-down approach covers multiple topics including network application layer, transport layer, network layer, link layer, and physical layer protocols. May also include a range of related technologies such as WWW, HTTP, FTP, DNS, SMTP, TCP, UDP, ICMP, IPv4, IPv6, OSPF, RIP, BGP, IEEE 802.11 (WiFi), cellular networks, LANs, Ethernet, CSMA/CD, CDMA, multimedia networking, network management, and security in Internet.

CMP SCI 4740 Introduction to High Performance Computing: 3 semester hours

Prerequisites: CMP SCI 2700, CMP SCI 2750, and CMP SCI 3130. This course introduces algorithms for multiprocessor and multi-core architectures. Students learn the models of modern parallel computation and techniques to take advantage of parallel architectures for distributed and shared memory multi-processor architectures. Credit not granted for both CMP SCI 4740 and CMP SCI 5740.

CMP SCI 4750 Introduction to Cloud Computing: 3 semester hours

Prerequisites: 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 4760 Operating Systems: 3 semester hours

Prerequisites: CMP SCI 2700, 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 4780 Computer and Network Security: 3 semester hours

Prerequisites: CMP SCI 4730 or graduate standing. This course provides a broad overview of computer and network security technologies and concerns from multiple perspectives, such as cryptography, Public Key Infrastructures (PKI), hashes and message digests, computer viruses and malware, email security, TCP/IP security, IPSec, Secure Socket Layer (SSL), Transport Layer Security (TLS), Virtual Private Networks (VPN), Firewall, AAA (Authentication, Authorization, Accounting), wireless and mobile systems security, secure identifications (IDs), cloud security, privacy and integrity, network attacks, system monitoring, and Intrusion Detection System (IDS). Management and human factors related to security will also be discussed.

CMP SCI 4782 Information Security: 3 semester hours

Prerequisites: CMP SCI 4730 or CMP SCI 4780 or consent of instructor. This course covers topics related to maintaining security in an organizational infrastructure, including risk analysis of the environment, access level and control including multi-factor authentication, and detection capabilities to ensure adequate security monitoring. Additional topics may include network level protections, firewalls, intrusion detection/prevention systems, securing web and mobile applications, securing cloud implementations, and overall architectural considerations for system security. Credit not granted for both CMP SCI 4782 and CMP SCI 5782.

CMP SCI 4880 Individual Studies: 1-3 semester hours

Prerequisites: Consent of the instructor. This course allows a student to pursue individual studies under the supervision of a faculty member. It may include development of a software project. The course may be repeated for credit.

CMP SCI 4890 Topics In Computer Science: 3 semester hours

Prerequisites: Consent of the Instructor. Covers a special topic in computer science to be determined by recent developments in the field and the interests of the instructor. Course may be repeated for credit.

CMP SCI 5012 Enterprise Web Development: 3 semester hours

Prerequisites: CMP SCI 4010. Covers design and implementation issues for enterprise web development, and some popular advanced technologies. Topics include MVC and persistence frameworks, such as Spring and Hibernate. Other topics may include Java Web services, EJB, messaging standards such as JMS, and Java EE design patterns. Students will develop enterprise-level web application projects. Credit cannot be earned for both CMP SCI 4012 and CMP SCI 5012.

CMP SCI 5020 Android Apps: Android Fundamentals: 3 semester hours

Prerequisites: CMP SCI 4010. Covers the fundamental programming principles, software architecture and user experience considerations underlying handheld software applications and their development environments. Involves in-­depth, hands-on examples, implemented on the Android Platform, and discussion of security. Credit not granted for both CMP SCI 4020 and CMP SCI 5020.

CMP SCI 5030 Intelligent Web: 3 semester hours

Prerequisite: Consent of the instructor. Covers the application of artificial intelligence and other modern techniques to help construct, navigate, and experience the Web. Topics may include retrieval models, classification, mining, association, topology, and indexing algorithms such as PageRank and HITS. Topics are the same as CMP SCI 4030 but material is covered at a greater depth and additional projects are required. Credit cannot be earned for both CMP SCI 4030 and CMP SCI 5030.

CMP SCI 5130 Advanced Data Structures And Algorithms: 3 semester hours

Prerequisites: An elementary course in analysis of algorithms. This course covers analysis of time and space complexity of iterative and recursive algorithms along with performance bounds, design of data structures for efficient performance, sorting algorithms, probabilistic algorithms, divide and conquer strategies, various algorithms on graphs, and np completeness.

CMP SCI 5222 Advanced iOS Apps: 3 semester hours

Prerequisites: CMP SCI 4220 or consent of the instructor. Focuses on building sophisticated apps using Objective-C and the scripting language Swift. Will cover recent developments in networking such as web services, Bluetooth and wifi connectivity, graphics and animation in 2-d and 3-d, autolayouts, OpenGL, advanced data sources such as plist and core data, source control and unit testing. May also discuss security topics. Credit not granted for both CMP SCI 4222 and CMP SCI 5222.

CMP SCI 5320 Introduction To Evolutionary Computation: 3 semester hours

Prerequisites: CMP SCI 4300 or consent of instructor. This course introduces the concepts of nature-inspired problem solving population dynamics, Darwinian selection, and inheritance. It discusses problems applicable to evolutionary algorithms, overviews the existing models and instances, and analyzes specific instances such as genetic algorithms and genetic programming.

CMP SCI 5340 Machine Learning: 3 semester hours

Prerequisites: Consent of instructor. Provides an introduction to machine learning in the context of applications such as data mining, natural language processing and adaptive computer systems. Reviews several supervised, unsupervised, and reinforcement machine learning techniques such as naive Bayes networks, clustering and decision trees. Selected concepts in computational learning theory may also be covered. Topics are the same as CMP SCI 4340 but material is covered at a greater depth and additional projects are required. Credit cannot be granted for both CMP SCI 4340 and CMP SCI 5340.

CMP SCI 5410 Computer Graphics: 3 semester hours

Prerequisites: MATH 2450 or equivalent. 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 5420 Digital Image Processing: 3 semester hours

Prerequisites: Consent of instructor. Covers topics in image analysis and visual perception. Students learn data structures and algorithms for image processing, region and texture analysis, image filtering, edge detection, contour following, and image enhancement in both spatial and frequency domain. Other topics may include color processing, coding for storage, retrieval, transmission, and image restoration. Topics are the same as CMP SCI 4420 but material is covered at a greater depth and additional projects are required. Credit cannot be granted for both CMP SCI 4420 and CMP SCI 5420.

CMP SCI 5500 Software Engineering: 3 semester hours

Prerequisite: Consent of instructor. 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 5520 Object Oriented Analysis And Design: 3 semester hours

Prerequisite: Consent of the instructor. Covers object-oriented development, illustrated with visual modeling language and following an agile process. Discusses elements of analysis, requirements, design, implementation, and deployment such as use cases, static and dynamic diagrams, patterns and frameworks. A semester long project, starting with requirements and culminating with deployment, is required. Topics are the same as CMP SCI 4520 but material is covered at a greater depth and additional projects are required. Credit not granted for both CMP SCI 4520 and CMP SCI 5520.

CMP SCI 5700 Computer Systems: 3 semester hours

Prerequisite: Background in computer organization or architecture or consent of the instructor. This course focuses on parallel computing architectures, including RISC, pipelining, vector processing, SIMD, MIMD, and array processing. It introduces different memory and I/O subsystems, hardware description languages, and it demonstrates performance enhancement using different architectures studied.

CMP SCI 5740 High Performance Computing: 3 semester hours

Prerequisite: Consent of the instructor. Introduces algorithms for multiprocessor and multi-core architectures. Students learn the models of modern parallel computation and techniques to take advantage of parallel architectures for distributed and shared memory multi-processor architectures.

CMP SCI 5750 Cloud Computing: 3 semester hours

Prerequisites: 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 5782 Advanced Information Security: 3 semester hours

Prerequisites: Consent of the instructor. The topics covered in this course are risk analysis to understand the security requirements of an environment; access controls to understand the level of controls needed for different practical situations, including multi-factor authentication; detection capabilities, to ensure adequate security monitoring for information systems; network level protections, with firewalls, intrusion detection/prevention systems; securing the web and mobile applications and cloud implementations; and overall security architecture to understand how various controls can provide the security-in-depth that is required in the current environment. Credit not granted for both CMP SCI 4782 and CMP SCI 5782.

CMP SCI 5880 Computer Science Independent Project: 1-3 semester hours

Prerequisites: Graduate standing and consent of instructor This course offers the student an opportunity to work on an advisor-supervised project, individually or in a group. A student may repeat the course for up to 6 credit hours total, but at most 6 hours can be accumulated for CMP SCI 5880 and CMP SCI 6900.

CMP SCI 5890 Topics In Computer Science: 1-3 semester hours

Prerequisites: Graduate standing and consent of the instructor This course offers various topics not offered on a regular basis. It may be taken more than once for credit with the consent of the department.

CMP SCI 5900 Graduate Internship in Computer Science: 3 semester hours

Prerequisites: Consent of Advisor. The internship provides for a student to attain field experience in an organization related to Computer Science. A student is employed off-campus for an assignment of at least 320 hours working on a project as directed by his/her supervisor in the host organization. The project should be approved by the student's academic advisor, or a designated faculty member, who will monitor the student's progress. The student is responsible for having the project supervisor at the company establish contact with the academic advisor to establish schedule and goals, and a procedure to evaluate the goals. The student will submit a written report to the advisor at the end of internship. The course cannot be repeated for credit. Students completing this course will be allowed only up to three hours of Independent Study (CMP SCI 5880).

CMP SCI 6320 Advances In Evolutionary Computation: 3 semester hours

Prerequisites: CMP SCI 5320. This course focuses on some advanced topics in Genetic and Evolutionary Computation, both theoretical and practical. Topics may include competent genetic algorithms, learning classifier systems, and Markov models. A substantial part of the course will be based on recent literature. Projects may involve literature research, developing specific applications or implementing a specific model.

CMP SCI 6340 Genetic Programming: 3 semester hours

Prerequisites: 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 6410 Topics In Computer Graphics: 3 semester hours

Prerequisites: CMP SCI 4410. This course covers various aspects of advanced graphics techniques, such as geometric modeling, rendering, shading, texturing, and computer animation. The course provides an in-depth study of recent advanced topics in computer graphics.

CMP SCI 6420 Topics In Image Processing And Multimedia: 3 semester hours

Prerequisites: CMP SCI 5420. This course covers new developments in digital image processing, computer vision, and multimedia. Topics to be covered may include image databases, object tracking, and large-scale data visualization.

CMP SCI 6740 High Performance Computing: 3 semester hours

Prerequisites: CMP SCI 5740. Looks at the current state of the art in parallel and distributed computing, with emphasis on programming in such environments. Introduction to the state of the art in code optimization and grid computing environments.

CMP SCI 6900 Thesis: 1-6 semester hours

Prerequisites: Completion of at least 12 graduate credits and approval of research topic by thesis advisor. This course is designed for those students intending to present a thesis as part of their M.S. program. At most 6 hours can be accumulated for CMP SCI 5880 and CMP SCI 6900.