Computer Science (CMPS) Course Descriptions

CMPS 101 - (Q) Computational Thinking
Prerequisites:None
Corequisites:None
Credits:3cr
Course Description:This course introduces students to the concepts, methods, and principles employed by Computer Scientists in problem solving and solution development. This body of knowledge has been successfully adopted by a wide variety of disciplines enabling significant advances in those disciplines. Students will be introduced to this body of knowledge through the analysis of relevant problems and also learn to apply it through the development of computer programs.

CMPS 112 - (FYDT, FYOC) Introduction to Computing and Information Technology
Prerequisites:None
Corequisites:None
Credits:3cr
Course Description:This course presents foundational concepts and surveys the past, present and future of computing and information technology with an emphasis on the seminal ideas, concepts, inventions and innovations that fuel the Digital Revolution. The sub-disciplines of computing are identified and discussed relative to each other. This course is designed to foster knowledge and abilities needed for gathering, evaluating and disseminating information with an emphasis on digital technology and oral communication. (Credits may not be earned for both CMPS 112 and IT 112.)

CMPS 134 - Computer Science I
Prerequisites:None
Corequisites:CMPS 134L
Credits:3cr
Course Description:An introduction to programming concepts and methodology using an object-oriented programming language (currently Java). Topics include problem analysis, abstraction, modularization, the development and use of algorithms, reuse, and the use of programming constructs including data types, classes, control structures, and methods.

CMPS 134L - Computer Science I Lab
Prerequisites:CMPS 134 (with departmental permission)
Corequisites:CMPS 134
Credits:1cr
Course Description:Programming-related activities are undertaken that apply essential concepts from CMPS 134, including problem decomposition, modularization, flow of control, scoping, object-orientation, and algorithm development.

CMPS 136 - Computer Programming II
Prerequisites:CMPS 134
Corequisites:None
Credits:3cr
Course Description:For non-computing majors who want more object-oriented programming experience. Includes data structures, file processing, graphical user interfaces and event-driven programming. May not be used to satisfy the requirements of CMPS or CIS. May not be taken by a student who has credit for CMPS 144.

CMPS 144 - Computer Science II
Prerequisites:CMPS 134, CMPS 134L, and either MATH 114 or MATH 142
Corequisites:CMPS 144L
Credits:3cr
Course Description:This course emphasizes object-oriented software development, addressing both software engineering and programming. Topics include modularization, abstraction, encapsulation/information hiding, software reuse, software testing, classic data abstractions (e.g., lists, trees) and algorithms (e.g., sorting, searching), recursion, program correctness, and basic algorithm analysis.

CMPS 144L - Computer Science II Lab
Prerequisites:CMPS 134 and CMPS 134L
Corequisites:CMPS 144 is required as a co-requisite, or as a prerequisite with departmental permission.
Credits:1cr
Course Description:Activities are undertaken that apply programming concepts form CMPS 144, including object-orientation, inheritance, polymorphism, iterators, generics, algorithms involving various container structures (e.g., stacks, queues, lists, trees, graphs), analysis of algorithms, and concurrency.

CMPS 204 - Computer Forensics
Prerequisites:C/IL 102/102L or its equivalent
Corequisites:None
Credits:3cr
Course Description:An introduction to the field of computer forensics emphasizing the collection and analysis of both persistent and volatile data from computer systems, networks, and storage media in a manner that is admissible in a court of law. May not be used as a major elective for any major in the Computing Sciences Department.

CMPS 213 - Sophomore Colloquia I
Prerequisites:None
Corequisites:CMPS 134
Credits:0.5cr
Course Description:CMPS 213 is offered each Fall Semester. Each semester a minimum of five meetings are held where important, emerging, or interesting topics in computing are presented and discussed. The material comes from a variety of sources including, but not limited to, faculty, alumni, invited speakers, students, and professional webinars and videos.

CMPS 214 - Sophomore Colloquia II
Prerequisites:None
Corequisites:CMPS 134
Credits:0.5cr
Course Description:CMPS 214 is offered each Spring Semester. Each semester a minimum of five meetings are held where important, emerging, or interesting topics in computing are presented and discussed. The material comes from a variety of sources including, but not limited to, faculty, alumni, invited speakers, students, and professional webinars and videos.

CMPS 240 - Data Structures and Algorithms
Prerequisites:CMPS 144
Corequisites:None
Credits:3cr
Course Description:An examination of the issues of data representation, algorithm structure, and encapsulation as they pertain to the development of object-oriented software. Abstract data types studied include stacks, queues, binary trees, n-ary trees, and graphs. Various representation alternatives are analyzed and compared, trade-offs frequently encountered by software developers are discussed.

CMPS 250 - Machine Organization and Assembly Language Programming
Prerequisites:CMPS 144
Corequisites:None
Credits:3cr
Course Description:An introductory study of the organization and architecture of computers through an exploration of various virtual machines. Programming at the assembly-language level and interfacing with software components (primarily written in C). Topics include representation of data and instructions, computer arithmetic, memory hierarchies, instruction sets, addressing modes, digital logic, microprogramming, pipelining, and parallel processing.

CMPS 260 - Theoretical Foundations of Computer Science
Prerequisites:CMPS 240
Corequisites:None
Credits:3cr
Course Description:An examination of the fundamental models and concepts of computation – automata, formal languages, and grammars – and how they are related. Church-Turing thesis; recursive and recursively enumerable sets; unsolvable problems; complexity of algorithms; Chomsky hierarchy.

CMPS 312 - Web Technology
Prerequisites:C/IL 102/102L or equivalent, COMM 329, IT 354
Corequisites:None
Credits:3cr
Course Description:This course covers the fundamental aspects of developing and maintaining Web sites. It provides a thorough coverage of the structure and elements of HTML and JavaScript necessary to create commercial-quality Web sites. Brief coverage will also be given to graphic design and multimedia content. Emphasis will be placed on client-side development although server-side issues will be considered. May not be used as part of any major in the Computing Sciences Department. Cannot be taken by a student who has credit for IT 120 or CMPS 356.

CMPS 313 - Junior Colloquia I
Prerequisites:None
Corequisites:CMPS 213
Credits:0.5cr
Course Description:CMPS 313 is offered each Fall Semester. Each semester a minimum of five meetings are held where important, emerging, or interesting topics in computing are presented and discussed. The material comes from a variety of sources including, but not limited to, faculty, alumni, invited speakers, students, and professional webinars and videos.

CMPS 314 - Junior Colloquia II
Prerequisites:None
Corequisites:CMPS 214
Credits:0.5cr
Course Description:CMPS 314 is offered each Spring Semester. Each semester a minimum of five meetings are held where important, emerging, or interesting topics in computing are presented and discussed. The material comes from a variety of sources including, but not limited to, faculty, alumni, invited speakers, students, and professional webinars and videos.

CMPS 330 - (W,EPW) Information Systems Analysis
Prerequisites:C/IL 102/102L/C/IL 104 or CMPS 134
Corequisites:None
Credits:3cr
Course Description:Introduction to concepts and practices of information processing. Computerized system requirements and techniques in providing appropriate decision-making information to management.

CMPS 331 - Information Systems Development
Prerequisites:CMPS 330
Corequisites:None
Credits:3cr
Course Description:A study of system-development methodology and the role played by the systems analyst in developing user-accepted information systems.

CMPS 340 - Introduction to Database
Prerequisites:CMPS 144 required, CMPS 240 recommended
Corequisites:None
Credits:3cr
Course Description:File structures concepts and file processing applications. Topics include file maintenance and storage management; file searching, sorting, and merging; consequential processing; index structures; B-trees; hash tables; indexed sequential files; database concepts.

CMPS 341 - Database Systems
Prerequisites:CMPS 340 required, CMPS 240 recommended
Corequisites:None
Credits:3cr
Course Description:An introduction to database management systems with an emphasis on relational database design and applications. It uses an appropriate database package such as ORACLE or PostgreSQL.

CMPS 344 - Programming Languages
Prerequisites:CMPS 240
Corequisites:None
Credits:3cr
Course Description:A study of programming languages from both the theoretical and practical perspectives. A survey of major and developing paradigms and languages is undertaken which includes use of specific languages to broaden the student’s experience. Implementation is studied through an introduction to language translation along with a study of run-time models and interfaces with virtual machines.

CMPS 350 - Computer Architecture
Prerequisites:CMPS 250
Corequisites:None
Credits:3cr
Course Description:A study of the logical structure of computer-system organization including a survey of logic and design with an emphasis on functional components. Topics include instruction sets, hard-wired and microprogrammed control-unit designs, memory systems (caches and virtual memory), I/O systems (interrupts, DMA, and channels). Overview and examples of alternative and advanced computer architectures (pipeline, array processors, multiprocessors).

CMPS 352 - Operating Systems
Prerequisites:CMPS 240, CMPS 250
Corequisites:None
Credits:3cr
Course Description:An introduction to the principles of operating systems. Topics include operating system structure, process management, scheduling and dispatching, process synchronization and interprocess communication, memory management, virtual memory, device management, I/O, and file systems.

CMPS 354 - Data Communications and Networks
Prerequisites:CMPS 352
Corequisites:None
Credits:3cr
Course Description:A study of data communication and networking concepts, including distributed-system architectures, electronic interfaces, data-transmission, data link protocols, terminal networks, computer communication, public-data networks, and local-area networks.

CMPS 355 - Mobile Application Development
Prerequisites:CMPS 352
Corequisites:None
Credits:3cr
Course Description:This course deals with the development of software for mobile devices such as smartphones and tablets. Topics include, but are not limited to, graphical user interface design, event-driven software model, resource management, interfacing with sensors, concurrency, database access, and networking.

CMPS 356 - Web Programming
Prerequisites:CMPS 240, HTML experience to the level where the students are capable of developing their own Web page
Corequisites:None
Credits:3cr
Course Description:This course covers all aspects of programming on the World Wide Web. This includes the presentation of HTML, Java, JavaScript and CGI. Topics include advanced HTML (maps, forms, etc.) client-server programming basics as they relate to the Web, Java machine concepts, Java/JavaScript similarities and differences, server-side programming, GIF animations, Web programming resources and environments. (Students may not earn credit for CMPS 356 and IT 356.)

CMPS 358 - Real-Time Systems
Prerequisites:CMPS 352
Corequisites:None
Credits:3cr
Course Description:A study of issues related to systems that interface with the physical world and must meet the timing constraints imposed on them. Topics include: real-time hardware architecture, real-time operating systems, invoking and managing threads and processes, interprocess communications and synchronization, manipulating process priority, concurrent programming, exception handling, software safety, reliability, and fault tolerance.

CMPS 360 - Analysis of Algorithms
Prerequisites:CMPS 240
Corequisites:None
Credits:3cr
Course Description:A survey of methods for designing and analyzing algorithms. Classic algorithms from graph theory, combinatorics and text processing are examined, as are traditional design strategies such as divide-and-conquer, backtracking and dynamic programming. Other topics include NP-completeness and parallel algorithms.

CMPS 362 - Numerical Analysis
Prerequisites:CMPS 134, MATH 222
Corequisites:None
Credits:3cr
Course Description:A survey of numerical methods for solving equations, integration, differentiation, interpolation, differential equations, and linear algebra, and the analysis of error.

CMPS 364 - Theory of Computation
Prerequisites:CMPS 260
Corequisites:None
Credits:3cr
Course Description:The development of a theoretical notion of computability and its relationship to Turing computability and recursive functions; the study of the relationships between automata, formal languages and grammars.

CMPS 370 - Computer Graphics
Prerequisites:CMPS 240
Corequisites:CMPS 250
Credits:3cr
Course Description:An introduction to the hardware, software and techniques used to generate graphical representations by computer. Two and three dimensional concepts, algorithms and architectures are studied. An essential aspect of the course involves the development of programs utilizing appropriate APIs (currently OpenGL is emphasized) as a means of developing expertise. Advanced topics may be pursued as appropriate.

CMPS 372 - Artificial Intelligence
Prerequisites:CMPS 240
Corequisites:None
Credits:3cr
Course Description:Problem solving using expert systems, heuristic programming techniques, tree speed-up techniques, and learning mechanisms.

CMPS 374 - (W,EPW) Fundamentals of Software Engineering
Prerequisites:CMPS 240
Corequisites:None
Credits:3cr
Course Description:An introduction to the concepts of Software Engineering. Stress is placed upon formal models for the design and development of high-quality software. Topics include: project planning, requirements analysis, system design, program design, program implementation, program testing, system testing, system delivery, and maintenance. A group project will be included.

CMPS 376 - Rapid Prototyping
Prerequisites:CMPS 136 or CMPS 144
Corequisites:None
Credits:3cr
Course Description:Some common applications using a database with a visual interface (perhaps Web based) can be successfully treated using Rapid Prototyping (a.k.a. Rapid Application Development). This course will cover the synergy of combining a visual language and a relational database employing rigorous design techniques.

CMPS 384 - Special Topics
Prerequisites:As published
Corequisites:None
Credits:3cr
Course Description:Some recent courses have covered Rapid Prototyping, Real-Time Systems, and Parallel Computing. A syllabus including prerequisites is published prior to the registration period for the course.

CMPS 393 - Computer Research
Prerequisites:Departmental permission
Corequisites:None
Credits:3cr
Course Description:A research project carried out by a student under the direction of a faculty member in the department. The results will be prepared in a form suitable for publication. Reader fee.

CMPS 413 - Senior Colloquia I
Prerequisites:None
Corequisites:CMPS 313
Credits:0.5cr
Course Description:CMPS 413 is offered each Fall Semester. Each semester a minimum of five meetings are held where important, emerging, or interesting topics in computing are presented and discussed. The material comes from a variety of sources including, but not limited to, faculty, alumni, invited speakers, students, and professional webinars and videos.

CMPS 414 - Senior Colloquia II
Prerequisites:None
Corequisites:CMPS 314
Credits:0.5cr
Course Description:CMPS 414 is offered each Spring Semester. Each semester a minimum of five meetings are held where important, emerging, or interesting topics in computing are presented and discussed. The material comes from a variety of sources including, but not limited to, faculty, alumni, invited speakers, students, and professional webinars and videos.

CMPS 440 - Compiler Design
Prerequisites:CMPS 344
Corequisites:None
Credits:3cr
Course Description:Study of techniques and problems involved in constructing compilers. Lexical analysis, syntax analysis, semantic analysis, symbol-table management, code generation, code optimization.

CMPS 481 - Computer Internship
Prerequisites:Departmental permission
Corequisites:None
Credits:3cr
Course Description:An extensive job experience in computing which carries academic credit. Prior approval is required; information is available on the department Web site.

CMPS 490 - (W,EPW) Computer Projects
Prerequisites:Senior standing, departmental permission
Corequisites:None
Credits:3cr
Course Description:In this course, students prepare and present individual computer projects to be evaluated by the instructor and their fellow students.