CMSI 182 - Introduction to Computer Science 3 Semester Hours Great ideas in computer science, including some programming using a contemporary programming language. Lecture, 3 hours. |
CMSI 185 - Computer Programming 3 Semester Hours Introduction to algorithms and computer programming using Java. Lecture, 3 hours. |
CMSI 186 - Programming Laboratory 3 Semester Hours Workshop in Java programming, treating one medium-sized application every two weeks in a laboratory setting. Typical projects: discrete simulation, randomized estimation, maze solving, dynamic programming, large-number arithmetic, numerical methods, GUIs. For majors and minors only. Prerequisite: A grade of C (2.0) or better in CMSI 185. |
CMSI 261 - Epistemological Foundations of Computer Science 3 Semester Hours A study of the philosophical and epistemological roots of computer science. Topics include: language, thought, cognition, logic, computation, the Church-Turing thesis, computer programming, and artifi cial intelligence. Lecture, 3 hours. Prerequisite: MATH 101 or higher, or placement into MATH 106 or higher. |
CMSI 264 - Cryptography through the Ages 3 Semester Hours Descriptions of mathematical systems that have been used for enciphering and deciphering information, and a study of the context in which these systems arose. Lecture, 3 hours. Prerequisite: MATH 101 or higher, or placement into MATH 106 or higher. |
CMSI 281 - Data Structures and Algorithms I 3 Semester Hours Introduction to data types, information structures, and algorithms. Topics include: collection classes and interfaces for sets, lists, stacks, queues, and dictionaries; implementation techniques such as arrays, linked lists, and efficient tree structures; introduction to computational complexity; elementary sorting; hashing. Lecture, 3 hours. Prerequisite: A grade of C (2.0) or better in CMSI 185. |
CMSI 282 - Data Structures and Algorithms II 3 Semester Hours Algorithm paradigms, with an emphasis on combinatorial search. Topics include: generating combinatorial objects; greedy methods; dynamic programming; randomized algorithms; modern heuristics such as genetic programs and simulated annealing; advanced sorts and order statistics; cake-cutting and fair division; graph algorithms; computational geometry. Lecture, 3 hours. Prerequisite: CMSI 281. |
CMSI 284 - Computer Systems Organization 3 Semester Hours Basic principles of computer systems. Topics include: data representations, instructions and instruction formats, assemblers and assembly languages, linking and loading, process execution, interrupt and device-handling, file management, and mixed-language programming. Lecture, 3 hours. |
CMSI 298 - Special Studies 1-3 Semester Hours |
CMSI 355 - Networks 3 Semester Hours A detailed study of the design and use of internetworking technologies in modern digital communication systems. Topics include: routing and control protocols, signalling, multicasting, OSI model, sockets, IPv4, IPv6, UDP, TCP, ARP, ICMP, IGMP, Mobile IP, DNS, SMTP, FTP, VoIP, and HTTP. Lecture, 3 hours. Prerequisite: CMSI 284. |
CMSI 365 - Enterprise Production Practicum 1-3 Semester Hours The design, construction, and management of an online information system. Experience will be gained producing an in-use online system with emphasis on stability and usability for the target audience. Consent of instructor required. This course may be repeated for up to 3 semester hours of credit. |
CMSI 370 - Interaction Design 3 Semester Hours Introduction to interaction design and human-computer interaction, with equal emphasis on 1) learning how to design and evaluate interaction architectures and 2) learning how to use existing frameworks to implement such architectures. Topics include: interaction guidelines, principles, and theories; usability engineering; the model-view-controller (MVC) paradigm; and current frameworks such as Swing, GLUT, and Cocoa. Lecture, 3 hours. Prerequisite: CMSI 281. |
CMSI 371 - Computer Graphics 3 Semester Hours Introduction to interactive computer graphics, emphasizing raster-scan techniques. Topics include the design and use of graphics packages and standards such as OpenGL and Java2D, graphics engines, animation, three dimensional modeling, computational geometry, shading, and ray tracing. Lecture, 3 hours. Prerequisite: CMSI 281. |
CMSI 385 - Introduction to the Theory of Computation 3 Semester Hours Introduction to the formal theory of computation. Topics include: finite automata and regular sets; context-free grammars and pushdown automata; Turing machines and computability; intractability. Lecture, 3 hours. Prerequisites: CMSI 281 and MATH 248. |
CMSI 386 - Programming Languages 3 Semester Hours A comparative study of the rationale, concepts, design, and features of several major programming languages. Topics include the role of bindings, control fl ow, types, subroutines, modules, objects, and concurrency. Major attention is given to C, Java, ML, Perl, and JavaScript. Lecture, 3 hours. Prerequisite: CMSI 284. |
CMSI 387 - Operating Systems 3 Semester Hours Concepts in the design of operating systems, including: processes, mutual exclusion, synchronization and message-passing, memory management, multiprogramming, paged allocation and paging policies, resource and I/O management, file systems, and security. Lecture, 3 hours. Prerequisite: CMSI 284. |
CMSI 398 - Special Studies 1-4 Semester Hours |
CMSI 399 - Independent Studies 1-4 Semester Hours |
CMSI 401 - Software Engineering Lab 3 Semester Hours Specification, design, and implementation of large programs in a group setting, including the software deveopment life-cycle and use of the Unified Modeling Language (UML) for specifying, visualizing, and documenting models. Lecture and Laboratory, 3 hours. Consent of instructor required. |
CMSI 402 - Senior Project Lab 4 Semester Hours Analysis, design, implementation, and presentation of a large-scale, individual project, demonstrating mastery of the computer science curriculum. Lecture and Laboratory, 4 hours. Consent of instructor required. |
CMSI 475 - Computational Complexity 3 Semester Hours Introduction to the study of computational complexity, including efficient algorithms for matrix multiplication and fast Fourier transforms, the classes P and NP, approximation algorithms, randomized algorithms and RP, parallel algorithms and NC. Lecture, 3 hours. Prerequisites: CMSI 282 and 385. |
CMSI 485 - Artificial Intelligence 3 Semester Hours Introduction to the theory and applications of artificial intelligence. Topics include heuristic search theory, knowledge representation and symbolic reasoning, natural language understanding, and machine learning. Lecture, 3 hours. Prerequisites: CMSI 385 and 386. |
CMSI 486 - Introduction to Database Systems 3 Semester Hours Theory and design of database systems, with emphasis on relational and object-oriented models. Topics include semantic data modeling, database languages, data integrity, physical database design, normalization, indexing, query processing, transaction management, concurrency control, and object-relational mapping. Lecture, 3 hours. Prerequisites: CMSI 386 and 387. |
CMSI 488 - Compiler Construction 4 Semester Hours Introduction to the theory and design of translators for high-level computer programming languages. Topics include programming language specification, scanner construction, parser construction, intermediate representations, code generation, and optimization. Coursework includes implementation of a compiler. Lecture, 3 hours. Prerequisites: CMSI 385 and 386. |
CMSI 498 - Special Studies 1-4 Semester Hours |
CMSI 499 - Independent Studies 1-4 Semester Hours |
CMSI 583 - Theory of Computation 3 Semester Hours Finite automata, regular sets; context-free grammars, pushdown automata; context-free languages; Turing machines, decidable and undecidable problems; complexity, intractability, and NP-completeness. Lecture, 3 hours. Prerequisite: CMSI 281. |
CMSI 585 - Programming Languages 3 Semester Hours Introduction to the principles of programming language design and implementation via a comparative study of several major languages. Topics include syntactic and semantic specification, bindings, control fl ow, types, subroutines, modules, objects, and concurrency. Major attention is given to C/C++, Java, ML, Perl, and JavaScript. Prerequisites: CMSI 284 and 386. |
CMSI 587 - Operating Systems 3 Semester Hours Topics in the design of operating systems with emphasis on large-scale multiprocessing, multiprogramming, and distributed environments. Topics include process scheduling, interprocess communication, I/O management, virtual memory management, file systems, and network, distributed, and realtime operating systems. Prerequisite: CMSI 284. |
CMSI 588 - Compiler Construction 3 Semester Hours Topics in the theory and design of compilers and interpreters for high-level programming languages, including scanners and scannergenerators, context-free grammars and pushdown automata, parser construction, code generation, syntax-directed translation, error analysis and recovery, and optimization and data-fl ow analysis. Lecture, 3 hours. Prerequisites: CMSI 583 and 585. |
CMSI 598 - Special Studies 1-4 Semester Hours |
CMSI 599 - Independent Studies 1-4 Semester Hours |
CMSI 601 - Graduate Seminar 3 Semester Hours Project-based seminar in which students will be required to select, research, write about, and discuss some aspect of a broad area of current interest to computer scientists and electrical engineers (e.g., computer networks, digital communication). Prerequisites: Successful completion of coursework and the endorsement of the faculty advisor. (The seminar can be taken during the final semester of coursework subject to the approval of the faculty advisor.) |
CMSI 641 - Software Engineering 3 Semester Hours Design and development issues of large-scale software systems which are reliable and easily maintainable. Course project covers each step of the development process from the initial needs analysis and requirement specifi cation through design and implementation. Topics include tradeoffs between agile and traditional approaches, impact of legacy systems, architectural representation issues, testing, project risk management, and emerging trends in software engineering such as model-driven engineering and aspect-oriented software development. Prerequisites: CMSI 585 and 587. |
CMSI 655 - Internet Technologies 3 Semester Hours Study of the basic architecture, protocols and services of the global Internet. Topics include: internetworking principles, the TCP/IP protocol suite, socket-level programming, DNS, MIME, HTTP, FTP, and POP; XML technologies; web programming with XHTML, CSS, JavaScript and web server extensions; the design of databasebacked systems, middleware, scalability and security. Prerequisite: CMSI 585. |
CMSI 670 - Interaction Design 3 Semester Hours Interaction design and human-computer interaction, with equal emphasis on learning how to design and evaluate interaction architectures and learning how to survey and analyze current literature on the subject to implement such architectures. Topics include: interaction guidelines, principles, and theories; usability engineering; the modelview- controller (MVC) paradigm; and current research in the field. |
CMSI 671 - Computer Graphics 3 Semester Hours
Topics in computer graphics, including: raster display systems, interactive computer graphics, object modeling, transformations, synthetic image generation, animation, image processing, and shaders with examples from OpenGL.
Prerequisite: CMSI 281.
|
CMSI 673 - Distributed and Concurrent Programming 3 Semester Hours
Study of paradigms and languages for concurrent and distributed computing. Topics include concurrent programming foundations; Win32 processes and threads; Java threads, networking and RMI; real-time and distributed systems; remoting; Java EE and .NET.
Prerequisite: CMSI 284.
|
CMSI 674 - Topics in Operating Systems 3 Semester Hours
Topics include concepts and design issues in distributed operating systems and UNIX implementation.
Prerequisite: CMSI 587.
|
CMSI 675 - Declarative Programming Languages 3 Semester Hours
A survey of theoretical foundations and computer languages for functional and logic programming, with examples from LISP, Scheme, Haskell, ML, SQL, and Prolog.
Prerequisite: CMSI 585.
|
CMSI 677 - Artificial Intelligence 3 Semester Hours
Study of artificial intelligence. Topics include: problem solving methods; heuristic search and game playing; knowledge representation, frames, inheritance and common-sense reasoning; neural nets and genetic algorithms; and machine learning.
Prerequisites: CMSI 385 and 386.
|
CMSI 682 - Knowledge-Based Systems 3 Semester Hours
Detailed study of design and implementation of knowledge-based systems. Topics include: logic and theorem proving; deduction systems; reaction systems; forward and backward chaining; knowledge acquisition; and explanatory interfaces.
|
CMSI 685 - Natural Language Processing 3 Semester Hours
Role of syntax, semantics and pragmatics in human language processing by computers. Topics include: natural language generators and parsers; inference, conceptual analysis; and discourse processing.
Consent of instructor required.
|
CMSI 686 - Database Systems 3 Semester Hours
Fundamental concepts in the fi eld of database technology. Topics include: database system structure, semantic data modeling, relational and object-oriented databases, query languages, integrity and security, physical database design, crash recovery, and concurrency.
Prerequisite: CMSI 387 or 587.
|
CMSI 687 - Topics in Theoretical Computer Science 3 Semester Hours
Topics from: Computational complexity; theory of formal languages; program schemes, recursion schemes; discrete developmental systems.
This course may be repeated for credit. Consent of instructor required. Prerequisite: CMSI 583.
|
CMSI 688 - Object Technologies 3 Semester Hours
Study of object-oriented philosophy and its applications in software architecture and programming languages. Topics include: objectoriented design, abstraction, inheritance, polymorphism, component models and design patterns.
Prerequisite: CMSI 585 or equivalent.
|
CMSI 689 - Computer Networks 3 Semester Hours
Concepts in and design of large-scale distributed networks and local area networks, including topologies, standards and protocols.
(See ELEC 687)
|
CMSI 698 - Special Studies 1-3 Semester Hours
|
CMSI 699 - Independent Studies 1-3 Semester Hours
|