Computer Science
Computer Science (COMP)
COMP 400A Object-Oriented Programming (3 Credit Hours)
This programming intensive course with its weekly lab component provides an exploration in problem solving for graduate-level courses, using object-oriented programming in a language such as Java.
To analyze and decompose problems, specify algorithms, and construct solutions by synthesizing classes, objects and other components of object
Outcomes
To analyze and decompose problems, specify algorithms, and construct solutions by synthesizing classes, objects and other components of objectCOMP 400B Data Structures I (3 Credit Hours)
Pre-requisites: COMP 400A
This course explores introductory data structures including array lists, linked lists, stacks, queues, binary trees, and hash tables. Efficiency of data structure operations is analyzed. Recursion, applications of data structures, and simple analysis of algorithms are covered. Students will be able to select appropriate data structures to integrate into algorithms to solve computational problems.
Students describe linear data structures and analyze the performance of their operations
Outcomes
Students describe linear data structures and analyze the performance of their operationsCOMP 400C Data Structures II (3 Credit Hours)
This course explores advanced abstract data types in depth, such as sets, maps, and graphs, and reproduces their implementation using arrays and dynamically allocated nodes in an object-oriented language. The course also analyzes the performance of the data structures' built-in operations and related algorithms such as sorting, searching, and traversing.
Students describe non-linear data structures and analyze the runtime performance of their operations, solve computational problems by synthesizing and integrating suitable data structures, and implement algorithms within the object-oriented paradigm
Outcomes
Students describe non-linear data structures and analyze the runtime performance of their operations, solve computational problems by synthesizing and integrating suitable data structures, and implement algorithms within the object-oriented paradigmCOMP 400D Computing Tools and Techniques (1 Credit Hour)
This course introduces students to the Unix shell environment and essential tools.
Students who complete this course will develop fluency in the Unix (Linux) environment
Outcomes
Students who complete this course will develop fluency in the Unix (Linux) environmentCOMP 400E Discrete Structures (3 Credit Hours)
This course provides the mathematical foundations for graduate-level study in computer science, including such topics as complexity of algorithms, modular arithmetic, induction and proof techniques, graph theory, combinatorics, Boolean algebra, logic circuits, and automata.
To analyze properties of functions, relations, graphs, trees, paths; evaluate Boolean Expressions; apply induction towards proving correctness of algorithm and classifying resource usage; synthesize finite-state machines and logic circuits
Outcomes
To analyze properties of functions, relations, graphs, trees, paths; evaluate Boolean Expressions; apply induction towards proving correctness of algorithm and classifying resource usage; synthesize finite-state machines and logic circuitsCOMP 401 Computer Security (3 Credit Hours)
Pre-requisites: COMP 170 or instructor permission
This is a foundations course on computer security, covering a comprehensive range of concepts and technologies, including security goals, encryption, penetration testing, software exploitation, reverse engineering, packet sniffing, and secure coding. The final project requires a presentation and technical report where the students will show and describe what they accomplished.
Students will find and exploit vulnerabilities in computer and network systems; articulate cryptography and security goals, and synthesize the knowledge of different tools and techniques by applying them to an intensive real-world project
Outcomes
Students will find and exploit vulnerabilities in computer and network systems; articulate cryptography and security goals, and synthesize the knowledge of different tools and techniques by applying them to an intensive real-world projectCOMP 403 Operations Management (3 Credit Hours)
Application of concepts and methods for managing production and service operation. Topics include demand forecasting, aggregate and capacity planning, inventory management, facility layout and location, just-in-time, managing quality, project planning, resource allocation, logistics. Emphasis on decision support
Understanding of the role of operations management in organizations, and applying models of production and operations management to decision making
Outcomes
Understanding of the role of operations management in organizations, and applying models of production and operations management to decision makingCOMP 404 Organizational Development (3 Credit Hours)
This course focuses on the manager's role in leading Organization Development and Change to maximize organization and individual effectiveness with a focus on Information Technology. The class explores Organization Development and Change theory, change practices, and discusses considerations a manager will face as a change agent in today's computing ecosystem.
To understand the dynamics of change in organizations; learn techniques and strategies in managing change; develop skills that will enable a change agent mentality within the context of IT leadership
Outcomes
To understand the dynamics of change in organizations; learn techniques and strategies in managing change; develop skills that will enable a change agent mentality within the context of IT leadershipCOMP 405 Database Administration (3 Credit Hours)
Knowledge of the configuration and management skills needed for successful administration of a database server. The database administrator manages hardware, backup, security, tables and indexes, performance monitoring, query performance and optimization, and transaction performance. This course takes a user through the stages of maximizing the performance of a database server.
Students will learn how to manage database performance, including topics such as the query optimizer, SQL EXPLAIN, table statistics, concurrency and transaction isolation levels, and security
Outcomes
Students will learn how to manage database performance, including topics such as the query optimizer, SQL EXPLAIN, table statistics, concurrency and transaction isolation levels, and securityCOMP 406 Data Mining (3 Credit Hours)
This course covers theory and practice of the analysis (mining) of extremely large datasets. With data growing at exponential rates knowledge gathering and exploration techniques are essential for gaining useful intelligence.
Students will be able to define and critically analyze data mining approaches for fields such as security, healthcare, science and marketing
Outcomes
Students will be able to define and critically analyze data mining approaches for fields such as security, healthcare, science and marketingCOMP 409 Advanced Numerical Analysis (3 Credit Hours)
An introduction to advanced numerical analysis. Introduction to error analysis, numerical solution of equations, interpolation and approximation, numerical differentiation and integration, matrices, and solution of systems of equations, numerical solution of ordinary and partial differential equations.
Course equivalencies: X-COMP409/MATH409
Students will have an understanding of advanced numerical analysis and its applications
Outcomes
Students will have an understanding of advanced numerical analysis and its applicationsCOMP 410 Operating Systems (3 Credit Hours)
The course introduces advanced operating system concepts including distributed, real-time and multi-threaded in addition to reviewing memory management, files, and processes.
Students will learn important topics in advanced operating systems and be able to make presentations on the topics
Outcomes
Students will learn important topics in advanced operating systems and be able to make presentations on the topicsCOMP 412 Open Source Computing (3 Credit Hours)
Pre-requisites: COMP 271
This course will cover the fundamentals of Free and Open Source software development. Topics to be addressed include licensing, Linux, typical software development tools, applications, and techniques for managing remote servers.
Students will learn to implement projects involving free and open-source software and learn how to participate in open-source projects effectively
Outcomes
Students will learn to implement projects involving free and open-source software and learn how to participate in open-source projects effectivelyCOMP 413 Intermediate Object-Oriented Development (3 Credit Hours)
Pre-requisites: COMP 271
Principles of object-oriented design and implementation, including object modeling (UML or equivalent), interface design, refactoring and test-driven development. Study of design patterns, including Adaptor, Decorator, Iterator, Abstract Factory, etc. Coverage of implementation tools including IDEs, source-code control and testing.
Use of interfaces in design; ability to recognize applications for design patterns, ability to refactor when necessary; ability to make effective use of test-driven development
Outcomes
Use of interfaces in design; ability to recognize applications for design patterns, ability to refactor when necessary; ability to make effective use of test-driven developmentCOMP 417 Social and Ethical Issues in Computing (3 Credit Hours)
This course covers social, legal, and ethical issues commonly arising in key areas related to computing technologies.
Understanding of laws and issues in areas such as privacy, encryption, freedom of speech, copyrights and patents, computer crime, and computer/software reliability and safety; understanding of philosophical perspectives such as utilitarianism versus deontological ethics and basics of the U.S. legal system
Outcomes
Understanding of laws and issues in areas such as privacy, encryption, freedom of speech, copyrights and patents, computer crime, and computer/software reliability and safety; understanding of philosophical perspectives such as utilitarianism versus deontological ethics and basics of the U.S. legal systemCOMP 418 Combinatorial Mathematics (3 Credit Hours)
The course covers basic combinatorial theory including permutations and combinations, the inclusion-exclusion principle and other general counting techniques, partitions, generating functions, recurrence relations, Burnside's Theorem, the cycle index, and Polya's formula.
Course equivalencies: X-COMP418/MATH418
Students will learn mathematical techniques in discrete mathematics and applied combinatorics
Outcomes
Students will learn mathematical techniques in discrete mathematics and applied combinatoricsCOMP 420 Software Systems Analysis (3 Credit Hours)
Pre-requisites: COMP 271
This course uses Unified Modeling Language and similar notation to model the early software analysis and design phases, from collection of user requirements to determination of class needs through object-oriented design.
Students will be able to capture business requirements in a software modeling document, and determine appropriate object-oriented classes suitable for final project implementation
Outcomes
Students will be able to capture business requirements in a software modeling document, and determine appropriate object-oriented classes suitable for final project implementationCOMP 421 Math Models & Simulation (3 Credit Hours)
This course covers tools for analyzing problems that are mathematically difficult. Discrete event simulation techniques and software tools for simulating processes are covered.
Course equivalencies: X-COMP421/MATH421/STAT421
Student will learn foundations of discrete event simulation
Outcomes
Student will learn foundations of discrete event simulationCOMP 422 Software Development for Wireless and Mobile Devices (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 413
This course will focus on the methods, tools, and technologies for developing software applications for wireless and mobile devices, such as personal digital assistants (PDA) and smart mobile phones.
Students will learn user interface design for small screens, programming techniques for devices with limited memory and processing power, data synchronization for mobile databases, and wireless network programming
Outcomes
Students will learn user interface design for small screens, programming techniques for devices with limited memory and processing power, data synchronization for mobile databases, and wireless network programmingCOMP 424 Client-Side Web Design (3 Credit Hours)
Pre-requisites: COMP 271
This course provides an in-depth study of the concepts and methods required for the design and implementation of the presentation layer of a web application. Coursework includes several substantial programming projects.
Students will learn markup of static and dynamic content, content transformation, client-side executable content including client-side scripting and embedded applets, and web-based content management systems
Outcomes
Students will learn markup of static and dynamic content, content transformation, client-side executable content including client-side scripting and embedded applets, and web-based content management systemsCOMP 425 Rapid Applications Development (3 Credit Hours)
Pre-requisites: COMP 271
This course will teach students how to design Rapid Application Development using an integrated development environment such as the .NET framework and methodology. It is designed to support object-oriented programming concepts.
Students will create database applications and web applications using server-side technologies
Outcomes
Students will create database applications and web applications using server-side technologiesCOMP 428 Algebraic Coding Theory (3 Credit Hours)
Pre-requisites: MATH 212 or Permission
In this course, major types of error-correcting codes, encoding and decoding , and their main properties will be studied. The codes examined will include the Hamming, Golay, BCH, cyclic, quadratic residue, Reed-Solomon, and Reed-Muller codes.
Course equivalencies: X-COMP428/MATH428
Students will learn both the theory and application of error-correcting codes
Outcomes
Students will learn both the theory and application of error-correcting codesCOMP 429 Natural Language Processing (3 Credit Hours)
Pre-requisites: (COMP 231 OR (COMP 271 or COMP 402)) AND (MATH 131 OR 161) and (STAT 103 OR STAT 203 OR ISSCM 241 OR PSYC 304 OR instructor permission)
In this course, students examine in depth the problems, methods, and applications of NLP. Topics will include information retrieval, sentiment analysis, machine translation, document classification, and question answering. We will also cover the underlying theory from probability, statistics, and machine learning that are crucial for the field.
Students will explain areas of NLP such as information retrieval, sentiment analysis, machine translation, document classification, question answering; Students will apply tools of NLP to a domain of their choice
Outcomes
Students will explain areas of NLP such as information retrieval, sentiment analysis, machine translation, document classification, question answering; Students will apply tools of NLP to a domain of their choiceCOMP 431 Cryptography (3 Credit Hours)
This course introduces the formal foundations of cryptography and also investigates some well-known standards and protocols, including private and public key cryptosystems, hashing, digital signatures, RSA, DSS, PGP, and related topics.
Course equivalencies: X-COMP431/MATH431
Students will gain an understanding of cryptosystems widely used to protect data security on the internet, and be able to apply the ideas in new situations as needed
Outcomes
Students will gain an understanding of cryptosystems widely used to protect data security on the internet, and be able to apply the ideas in new situations as neededCOMP 433 Web Services Programming (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 413
Web services are Web-based enterprise applications that use open, XML-based standards and transport protocols to exchange data with calling clients. This course provides the APIs and tools you need to create and deploy interoperable Web services and clients using .NET and Java WSDP.
Students will learn the standards and protocols for deploying web services
Outcomes
Students will learn the standards and protocols for deploying web servicesCOMP 434 Enterprise Software Development (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 413
The course shows how to use Enterprise JavaBeans to develop scalable, portable business systems. The technologies taught in the course include: component models, distributed objects, asynchronous messaging, and component transaction monitors.
Students will learn the architecture of EJB, entity and message and session beans
Outcomes
Students will learn the architecture of EJB, entity and message and session beansCOMP 436 Markup Languages (3 Credit Hours)
Pre-requisites: COMP 271
This course is concerned with XML and its various component frameworks. The core frameworks to be covered include Document Object Model (DOM), Simple API for XML processing (SAX), the XML Path language (XPath), and XSLT.
After taking this course, students will have working knowledge of XML and its connections to other ideas such as HTML, object models, relational databases, and network services
Outcomes
After taking this course, students will have working knowledge of XML and its connections to other ideas such as HTML, object models, relational databases, and network servicesCOMP 437 Intro Concurrent Programming (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 413
Many real-world software systems rely on concurrency for performance and modularity. This programming-intensive course covers analysis, design, implementation, and testing of concurrent software systems.
An in-depth understanding of event-based and thread-based views of concurrency; the ability to develop concurrent software components using suitable languages, frameworks, and design patterns; familiarity with object-oriented modeling and development tools and test-driven development
Outcomes
An in-depth understanding of event-based and thread-based views of concurrency; the ability to develop concurrent software components using suitable languages, frameworks, and design patterns; familiarity with object-oriented modeling and development tools and test-driven developmentCOMP 439 Distributed Systems (3 Credit Hours)
This course presents a modern discussion of distributed computing systems. Distributed computation, interactive services, collaborative computing, peer-to-peer sharing, and grid/utility computing are just a handful of distributed technologies that go beyond the capabilities of the traditional client/server model by allowing a collection of computers to be leveraged as a collective resource.
Students will learn design and implementation, scalability of performance, reliability, and security of loosely interconnected systems
Outcomes
Students will learn design and implementation, scalability of performance, reliability, and security of loosely interconnected systemsCOMP 440 Computer Forensics Investigations (3 Credit Hours)
This course introduces the fundamentals of computer/network/internet forensics, analysis and investigations.
The student will learn computer software and hardware relevant for analysis, and investigative and evidence-gathering protocols
Outcomes
The student will learn computer software and hardware relevant for analysis, and investigative and evidence-gathering protocolsCOMP 441 Human-Computer Interaction (3 Credit Hours)
Pre-requisites: COMP 271
This course studies the interaction between humans and computer-based systems. The course will provide students with the methods for evaluating, designing, and developing better interfaces between humans and systems.
Students will acquire an awareness of different design and evaluation methods as well as practical, effective, and cost-conscience methods for improving systems and their interfaces
Outcomes
Students will acquire an awareness of different design and evaluation methods as well as practical, effective, and cost-conscience methods for improving systems and their interfacesCOMP 442 Server-Side Software Development (3 Credit Hours)
Server-based web applications and services have become part of everyday life. This programming-intensive course covers analysis, design, implementation, and testing of multi-tiered server-based software systems along with typical tier-specific and technologies.
An understanding of software architecture and integration in the development of multi-tiered server-based software; familiarity with object-oriented modeling and development tools and test-driven development
Outcomes
An understanding of software architecture and integration in the development of multi-tiered server-based software; familiarity with object-oriented modeling and development tools and test-driven developmentCOMP 443 Computer Networks (3 Credit Hours)
This course surveys packet-switched computer networks and attendant communication protocols, using the TCP/IP protocol suite on which the Internet is based as the primary model. We will also study general high-level network issues such as security, authentication, fault tolerance, and congestion.
Students will understand how the Internet is constructed, how data is routed to its destination, how connections are made, how congestion is handled, and how security can be addressed
Outcomes
Students will understand how the Internet is constructed, how data is routed to its destination, how connections are made, how congestion is handled, and how security can be addressedCOMP 445 Internet of Things Device and Application Security (3 Credit Hours)
This course considers the safety, security, reliability, and privacy concerns of the embedded devices and cloud-based resources of the Internet of things. The course discusses methods for addressing these concerns.
Design/implement secure software for embedded systems and the IoT; Establish safety, security, reliability, privacy goals for IoT-based systems; Understand security and privacy concerns of embedded systems and the IoT
Outcomes
Design/implement secure software for embedded systems and the IoT; Establish safety, security, reliability, privacy goals for IoT-based systems; Understand security and privacy concerns of embedded systems and the IoTCOMP 446 Telecommunications (3 Credit Hours)
This course introduces the fundamental concepts of telecommunication networks. Underlying engineering principles of telephone networks, computer networks and integrated digital networks are discussed.
Students will learn how telephone and data networks work; They will also learn voice networks, analog versus digital transmission, data link protocols, SONET, ATM, cellular phone systems, and the architecture of the current telephone system
Outcomes
Students will learn how telephone and data networks work; They will also learn voice networks, analog versus digital transmission, data link protocols, SONET, ATM, cellular phone systems, and the architecture of the current telephone systemCOMP 447 Intrusion Detection and Computer Forensics (3 Credit Hours)
Pre- or co-requisites: COMP 271
This course will cover techniques for detecting the unusual usage patterns that typically signal a break-in. The course will also consider differences in detection of local intruders versus intrusion over networks. Finally issues in the prosecution of those breaking in to computers, particularly evidentiary issues are explored.
Students will learn to configure ID systems (eg, snort) and analyze their output; They will also understand both network-based and host-based monitoring techniques
Outcomes
Students will learn to configure ID systems (eg, snort) and analyze their output; They will also understand both network-based and host-based monitoring techniquesCOMP 448 Network Security (3 Credit Hours)
This course will involve a discussion of the methods and tactics used to keep attackers at bay as well as the mechanisms by which we can identify and potentially stop potential intruders. The course covers topics such as Encryption, authentication, firewalls, NAT/PAT, restricted access policies, intrusion detection and other security frameworks.
Students will gain an understanding of how to secure computers and network environments
Outcomes
Students will gain an understanding of how to secure computers and network environmentsCOMP 449 Wireless Networking and Security (3 Credit Hours)
Pre-requisites: COMP 271
This course will explore the wireless standards, authentication issues, common configuration models for commercial versus institution installs and analyze the security concerns associated with this ad-hoc method of networking.
Students will gain an understanding of wireless networking, protocols, and standards and security issues
Outcomes
Students will gain an understanding of wireless networking, protocols, and standards and security issuesCOMP 451 Enterprise Networking (3 Credit Hours)
Pre-requisites: COMP 271
Management of complex, high-speed, heterogeneous computer networks. Device management using SNMP and related protocols. Configuration and use of Network Management Systems. Data-flow management using LARTC and similar tools.
Ability to interpret SNMP network data, ability to implement a Network Management System and use it to identify bottlenecks, familiarity with traffic-control principles and mechanisms
Outcomes
Ability to interpret SNMP network data, ability to implement a Network Management System and use it to identify bottlenecks, familiarity with traffic-control principles and mechanismsCOMP 452 Introduction to Computer Vulnerabilities (3 Credit Hours)
This course will introduce students to computer vulnerabilities at the machine-code level, including viruses, browser vulnerabilities, buffer and heap overflows, return-to-libc attacks and others.
Describe some recent computer software vulnerabilities; Describe how vulnerabilities can be leveraged into an attack; Describe a vulnerability or attack at the machine-code level
Outcomes
Describe some recent computer software vulnerabilities; Describe how vulnerabilities can be leveraged into an attack; Describe a vulnerability or attack at the machine-code levelCOMP 453 Database Programming (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 400B
This course will cover advanced concepts in database access and programming including SQL, JDBC, SQLJ, JSP and servlets. Oracle 10g is used for projects.
Students will learn application development using the latest software tools; Students will also learn techniques for web based data retrieval and manipulation
Outcomes
Students will learn application development using the latest software tools; Students will also learn techniques for web based data retrieval and manipulationCOMP 458 Big Data Analytics (3 Credit Hours)
Pre-requisites: At least a C in the following courses (COMP 405 or COMP 453) AND (COMP 406 or COMP 479 or STAT 338 or STAT 408)
In this course, large data sets will be leveraged to solve challenging analytics problems. With more samples, analytics can use more complex learning models to automate more feature combinations for more robust model tuning, selection, and validation. Parallel, distributed processing will be performed with Apache Spark and Hadoop.
Python or R will be used with parallel frameworks to perform proper model selection when testing large combinations of features, models, hyperparameters, and ensembles, with additional emphasis on deep learning
Outcomes
Python or R will be used with parallel frameworks to perform proper model selection when testing large combinations of features, models, hyperparameters, and ensembles, with additional emphasis on deep learningCOMP 460 Algorithms & Complexity (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 363
This course will focus both on presenting general techniques for designing correct and efficient algorithms, as well as on formal methods for proving the correctness and analyzing the complexity of such algorithms.
Students learn: the ability to design and analyze efficient algorithms; understanding of the necessary models and mathematical tools; understanding of a variety of useful data structures and fundamental algorithms; exposure to the classification of computational problems into different complexity classes
Outcomes
Students learn: the ability to design and analyze efficient algorithms; understanding of the necessary models and mathematical tools; understanding of a variety of useful data structures and fundamental algorithms; exposure to the classification of computational problems into different complexity classesCOMP 462 Advanced Computer Architecture (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 264
This course presents key principles underlying the design of modern digital computers. The course introduces quantitative techniques used to guide the design process. It describes CPU performance issues and introduces instruction set architectures. The course then uses a hypothetical computer design, with a simple RISC architecture, to show how modern digital computers are implemented, first using a simple non-pipelined implementation, followed by a higher-performance pipelined implementation.
Students gain an understanding of the design of the memory hierarchy in modern digital computers, caching and virtual storage techniques, multiprocessor systems, and distributed shared memory systems
Outcomes
Students gain an understanding of the design of the memory hierarchy in modern digital computers, caching and virtual storage techniques, multiprocessor systems, and distributed shared memory systemsCOMP 464 High-Performance Computing (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 413
This course will use a blend of foundational understanding as well as a set of practical tools to gain insight into performance engineering of software. The course introduces techniques to gain performance boost in Java programs and C++ (or C) programs by discussing the use of multiple processors.
Students will learn shared memory, message passing and hybrid models of programming in both tightly-coupled and loosely-coupled computer systems
Outcomes
Students will learn shared memory, message passing and hybrid models of programming in both tightly-coupled and loosely-coupled computer systemsCOMP 468 Database System Design (3 Credit Hours)
The course covers both relational and object databases. Issues of physical storage and use of indexes as well as optimization of queries are discussed. The course also covers transaction processing, concurrency, data warehousing, data mining, and distributed databases.
Students learn the theory and practice of advanced database design and implementation; They will also gain an understanding of using commercial database environments such as Oracle
Outcomes
Students learn the theory and practice of advanced database design and implementation; They will also gain an understanding of using commercial database environments such as OracleCOMP 469 Physical Design and Fabrication (3 Credit Hours)
This course explores how things are made, including: physical design vs. design on non-physical things; rapid prototyping; 3D printing; 2D conceptualization and sketching; modeling.
Student will be able to: Visualize ideas via sketching basic shapes; Create 3D models using 3D modeling software; Use a 3D Printer; Give constructive feedback in peer review sessions
Outcomes
Student will be able to: Visualize ideas via sketching basic shapes; Create 3D models using 3D modeling software; Use a 3D Printer; Give constructive feedback in peer review sessionsCOMP 470 Software Quality and Testing (3 Credit Hours)
In this programming intensive course, students will learn effective automation, testing, and use of software metrics through the practices of Test Driven Development and Continuous Deployment.
Students will be able to perform rigorous testing techniques that contribute to operational reliability, and identify programming practices that both contribute to software maintainability and help to avoid errors
Outcomes
Students will be able to perform rigorous testing techniques that contribute to operational reliability, and identify programming practices that both contribute to software maintainability and help to avoid errorsCOMP 471 Theory of Programming Languages (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 413
There are over two thousand programming languages. This course studies several languages that represent the much smaller number of underlying principles and paradigms.
COMP 472 Compiler Construction (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 413
This course covers the basics of writing a compiler to translate from a simple high-level language to machine code. Topics include lexical analysis, top-down and LR parsing, syntax-directed translation, and code generation and optimization. Students will write a small compiler.
Students will learn the theory and practice of how to build a compiler
Outcomes
Students will learn the theory and practice of how to build a compilerCOMP 473 Advanced Object Oriented Programming (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 413
Object-orientation continues to be a dominant approach to software development. This advanced programming-intensive course studies object-oriented analysis, design, and implementation from a design patterns perspective.
Proficiency in the use of object-oriented languages, frameworks, and patterns; advanced understanding of key language mechanisms such as delegation, inheritance, polymorphism, and reflection; familiarity with object-oriented modeling and development tools and test-driven development
Outcomes
Proficiency in the use of object-oriented languages, frameworks, and patterns; advanced understanding of key language mechanisms such as delegation, inheritance, polymorphism, and reflection; familiarity with object-oriented modeling and development tools and test-driven developmentCOMP 474 Software Engineering (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 400B
The course discusses real-world theory and techniques organizations use to create high-quality software on time. Students work on a large programming team to create plans, review progress, measure quality, and make written and oral analyses of their project.
Students will experience process based development, understand the dynamics of a professional software organization, and develop skills for implementing software with others
Outcomes
Students will experience process based development, understand the dynamics of a professional software organization, and develop skills for implementing software with othersCOMP 476 Automata & Formal Languages (3 Credit Hours)
This course introduces formal language theory, including such topics as finite automata and regular expressions, pushdown automata and context-free grammars, Turing machines, undecidability, and the halting problem.
Course equivalencies: X-COMP476/MATH476
An understanding of the theoretical underpinnings of computability and complexity in computer science
Outcomes
An understanding of the theoretical underpinnings of computability and complexity in computer scienceCOMP 477 IT Project Management (3 Credit Hours)
Pre-requisites: A grade of "B-" or better in COMP 400B
This course is an introduction to the philosophy and practice of project management. The course involves a student group project to investigate and plan a 'real world' IT project that specifies project objectives, schedules, work breakdown structure, and responsibilities, an written interim report, and a final oral and written report.
Students will learn time management, work-flow management, and team dynamics to design, implement and test large-scale software projects
Outcomes
Students will learn time management, work-flow management, and team dynamics to design, implement and test large-scale software projectsCOMP 479 Machine Learning (3 Credit Hours)
Topics include a wide variety of supervised learning methods, both regression and classification, with an emphasis on those that perform well on large feature sets.
Students in this course will learn how to apply sophisticated algorithms to large data sets to make inferences for prediction or decision making
Outcomes
Students in this course will learn how to apply sophisticated algorithms to large data sets to make inferences for prediction or decision makingCOMP 480 Computer Graphics (3 Credit Hours)
This course introduces advanced topics in modern theory and practices in 3-D computer graphics, stressing real-time interactive applications using libraries like OpenGL.
Student will learn how to program real-time interactive applications using libraries like OpenGL
Outcomes
Student will learn how to program real-time interactive applications using libraries like OpenGLCOMP 483 Computational Biology (4 Credit Hours)
Pre-requisites: BIOL 488
This course presents an algorithmic focus to problems in computational Biology. As such it is built on earlier courses on algorithms and bioinformatics. Current algorithmic approaches, software tools, and scientific literature are discussed.
Students will learn, in detail, foundational methods and algorithms in bioinformatics
Outcomes
Students will learn, in detail, foundational methods and algorithms in bioinformaticsCOMP 484 Artificial Intelligence (3 Credit Hours)
This course advanced artificial intelligence concepts including theory, search techniques and programming.
Student will learn the theory of artificial intelligence, search techniques, and be able to build small applications based on it
Outcomes
Student will learn the theory of artificial intelligence, search techniques, and be able to build small applications based on itCOMP 486 Computational Neuroscience (3 Credit Hours)
Introduces computational methods to understand neural processing in the brain. Levels of representation from low-level, temporally precise neural circuits to systems-level rate-encoded models, to information-theoretic approaches. Emphasis on sensory systems, primarily vision and audition, most readily demonstrating the need for such computational techniques.
Students will be able to adeptly apply mathematical and computational frameworks in the various domains of neuroscience
Outcomes
Students will be able to adeptly apply mathematical and computational frameworks in the various domains of neuroscienceCOMP 487 Deep Learning (3 Credit Hours)
Pre-requisites: COMP 479
Deep learning is part of a broader family of machine learning methods based on artificial neural networks. This course will include key concepts of neural network algorithms as well as their applications in computer vision and natural language processing.
Students will analyze popular modern neural architectures such as convolutional and recurrent neural networks, design and evaluate their own neural networks, and apply neural network models to a practical task
Outcomes
Students will analyze popular modern neural architectures such as convolutional and recurrent neural networks, design and evaluate their own neural networks, and apply neural network models to a practical taskCOMP 488 Computer Science Topics (1-4 Credit Hours)
This course is used to introduce emerging topics in computer science that do not yet have a regular course number. Content of the course varies.
Understanding of an emerging area of Computer Science
Outcomes
Understanding of an emerging area of Computer ScienceCOMP 490 Independent Project (1-6 Credit Hours)
Pre-requisites: Approval of the Computer Science faculty member supervisor
An independent project in computer science or related disciplines, under the supervision of a member of the faculty.
COMP 499 Internship (1-6 Credit Hours)
An opportunity to obtain experience in software development, design, networks, or related activities in computer science in a professional setting. The student must obtain the approval of the Graduate Program Director and the student's work supervisor. A final report from the student and the supervisor are required.
COMP 501 Equitable and Inclusive Computer Science Pedagogy (3 Credit Hours)
Pre-requisites: COMP 400C; Graduate standing
This class covers the design of computer science courses through an equity and inclusion lens, and covers evidence-based best practices as applied to specific student concerns. Includes basics of teaching and learning theory and pedagogical techniques, and equity, diversity, and justice concerns.
Ability to explain justice-centered CS education; understand pedagogical frameworks; understand assessment approaches; understand Active Learning and Peer Instruction
Outcomes
Ability to explain justice-centered CS education; understand pedagogical frameworks; understand assessment approaches; understand Active Learning and Peer InstructionCOMP 502 Structure of Research Management and Funding (3 Credit Hours)
Pre-requisites: COMP 400C; Graduate standing
This class covers grant-proposal development, University compliance regulations, and laboratory and research management.
Ability to create successful grant proposals and to understand research management
Outcomes
Ability to create successful grant proposals and to understand research managementCOMP 503 Technology Entrepreneurship (3 Credit Hours)
Pre-requisites: COMP 400C; Graduate standing
This course provides aspiring researchers with the skills to pursue new ventures and technology commercialization. Students learn how to transition an innovation from the lab to the marketplace.
COMP 595 Thesis Supervision (0 Credit Hours)
Supervision for students working on a thesis while not for other classes. Restricted to students enrolled in the MS in Computer Science.
COMP 605 Master of Science Study (0 Credit Hours)
Course for continuing master's degree students engaged in study.