Active Course List
2024-2025
Computer Science
Current processes, methods, and tools related to formal methods for modeling and designing software systems. Topics include software architectures, methodologies, model representations, component-based designs, patterns, frameworks, CASE-based designs, and case studies.
This course studies the theoretical underpinnings of modern computer science, focusing on three main models of computation: DFA, PDA, and Turing Machines. Students determine model capabilities and limitations are: what is and is not computable by each of them. Pre: With permission by the instructor.
This course covers High Performance Computing (HPC) techniques used to address problems in Computational Science. Topics include the application areas and basic concepts of parallel computing, hardware design of modern HPC platforms and parallel programming models, methods of measuring and characterizing serial and parallel performance, and computational grid technologies. Pre: With permission by the instructor.
This course provides an advanced understanding of topics covered in COMS 320. The course addresses advanced topics in computer architecture including a major emphasis on measuring and improving computer performance. Topics include advances in pipelining and analysis and optimization of storage systems and networks, multiprocessor challenges and trends. Pre: With permission by the instructor.
This course provides an overview of embedded and real-time systems and their development. Students will design and build a real-time operation system with a microprocessor to host real-time service data processing using sensor/actuator devices. The course covers design principles, methodologies, design tools and problem solving techniques. Pre: With permission by the instructor.
This course offers an overview of the field of Artificial Intelligence (AI). Basic introductory concepts and a history of the field are covered. Emphasis is placed on the knowledge representation and reasoning strategies used for AI problem solving. Solutions are found using the LISP programming language. Pre: With permission by the instructor.
This course presents an overview of the field of computational linguistics. Topics include regular expressions, finite state automata, information theory, context free grammars, hidden Markov models and Viterbi algorithms. Students will work on problems within the field including parsing, machine translation, speech recognition, information extraction and parsing. Pre: With permission by the instructor.
This course offers a blended view of computer science, information science, and statistics for storing, accessing, modeling, and understanding large data sets. Topics include fundamental data mining algorithms: decision trees, classification, regression, association rules, statistical models, neural networks, and support vector machines. Pre: With permission by the instructor.
This course provides advanced coverage of data communication and networking protocols. The course introduces the principles, protocols and performance evaluation techniques of various advanced networking technologies. Topics include error detection and recovery, flow control, routing, data throughput, and performance analysis of existing and emerging Internet protocols. Pre: With permission by the instructor.
This course covers emerging mobile and wireless data networks. The course reviews significant standard wireless protocols (e.g., Bluetooth, IEEE 802.11, RFID, and WAP), and explores technologies for the development of mobile and wireless applications (e.g., J2ME, WML, Brew). Includes research, design and implementation of wireless, mobile application. Pre: With permission by instructor.
This course studies the historical and current concepts and implementations of computer operating systems. Basic operating systems topics include processes, interprocess communication, interprocess synchronization, deadlock, memory allocation, segmentation, paging, resource allocation, scheduling, file systems, storage, devices, protection, security, and privacy. Pre: With permission by the instructor.
The second of a two-course sequence on graphics and game programming. The course concentrates on 3D graphics including modeling, rendering, and animation for computer games and graphic simulations. Programs are created using a current graphics and game development environment.
This course offers an introduction to the specification and implementation of modern compilers. Topics covered include lexical scanning, parsing, type checking, code generation and translation, an introduction to optimization, and compile-time and run-time support for modern programming languages. Students will build a working compiler. Pre: With permission by the instructor.
This course covers advanced object-oriented programming for general purpose software development. Topics include tools and processes appropriate for employing object-oriented designs and programming with a significant software development environment and advanced data structures and algorithms, graphical user interfaces, and software development processes. Pre: With permission by the instructor.
Building upon the introduction provided in CS 300, provides a formal presentation of software engineering concepts. Additional topics include alternative design methods, software metrics, software project management, reuse and re-engineering.
Provides an introduction to software quality assurance with focus on software testing processes, methods, techniques and tools. Topics include formal verification and validation techniques; black box and white box testing; integration, regression, performance, stress, and acceptance testing of software.
Research methodology in general and in computer science. Data and research sources. Analysis of existing research. Preliminary planning and proposals. Conceptualization, design, and interpretation of research. Good reporting. Prereq: an elementary statistics course
Special topics in computer science research not covered in other courses. May be repeated for credit on each new topic.
Students attend seminar presentations and present a research topic at one of the seminars.
Brings together fundamental methods in order to provide accesss to the best method(s) for algorithm usage and analysis.
Computation using Turing machines, logic, oracles, alternating Turing machines, and interactive proof systems. Various aspects of computational complexity including NP-compleleness, Co-NP,P parallel-complexity theory, their relationships, counting classes, and the polynomial time hierarchy are discussed.
This course will cover concepts and techniques used in modern processor architectures such as pipelining, superscalar execution, branch system and application software such as compilers, operating system, database management systems, and network communication.
This course is a continuation of Artificial Intelligence (COMS 530). Emphasis is placed on advanced topics and the major areas of current research within the field. Theoretical and practical issues involved with developing large-scale systems are covered.
The design of large-scale, knowledge-based systems. Emphasis on both theoretical and practical issues. Examination of alternative knowledge representation techniques and problem-solving methods used to design knowledge-based systems.
This course will focus on advanced uniprocessor and distributed operating systems. Topics covered will include operating system organization, including monolithic, microkernel, and exokernel; communications, including secure communications protocols, naming, and remote procedure call; file systems, including RAID and journaling; and memory management, including distributed shared memory.