LOYOLA UNIVERSITY CHICAGO

2023-2024 CATALOG

The Academic Catalog is the official listing of courses, programs of study, academic policies and degree requirements for Loyola University Chicago. It is published every year in advance of the next academic year.

Computer Science (COMP)

Discover, search, courses!

COMP 102  Web Design and Multimedia Publishing  (3 Credit Hours)  
This course introduces foundations of the world wide web technology, HTML, and multimedia publishing techniques. Topics include HTML syntax, CSS, XML, RSS, and various multimedia formats.
An understanding of the technologies behind web sites and the ability to use them effectively

Outcomes

An understanding of the technologies behind web sites and the ability to use them effectively
COMP 104  Computer Animation  (3 Credit Hours)  
The course introduces techniques for understanding and developing dynamic and interactive media by using sound, motion, images, and text. Relevant software knowledge areas are covered.
Ability to publish created animated media projects to the web in a process that involves understanding human interface design

Outcomes

Ability to publish created animated media projects to the web in a process that involves understanding human interface design
COMP 111  History of Computing  (3 Credit Hours)  
The social and organizational history of humanity is intricately entangled with the history of technology in general and the technology of information in particular. Advances in this area have often been closely involved in social and political transformations. While the contemporary period is often referred to by such names as the Computing and Information Age, this is the culmination of a series of historical transformations that have been centuries in the making. This course will provide a venue for students to learn about history through the evolution of number systems and arithmetic, calculating and computing machines, and advanced communication technology via the internet.
Course equivalencies: X - COMP 111 / HIST 279C  
COMP 122  Introduction to Digital Music  (3 Credit Hours)  
Computers and digital tools have been seeping into the world of music, this course aims to explore this newly formed territory. This course is intended for students who wish to learn more about electronic music, signal processing, and algorithmic music composition.
Knowledge Area: Quantitative Knowledge  
Course equivalencies: X-COMP 122/MUSC 122  
Understanding of the physics of musical sound and digital audio, facility with hands-on applications of algorithmic music composition and musicology, and ability to design and render digital instruments

Outcomes

Understanding of the physics of musical sound and digital audio, facility with hands-on applications of algorithmic music composition and musicology, and ability to design and render digital instruments
COMP 125  Visual Information Processing  (3 Credit Hours)  
This course, intended primarily for non-majors, provides an introduction to computer programming using a language well-suited to beginning programmers and practical applications, e.g., Visual Basic.Net. Restricted to Freshman or Sophomore standing OR majors other than COMP-BS AND CSEC-BS AND SWEN-BS.
Knowledge Area: Quantitative Knowledge  
Understanding of computer mechanisms for representing and analyzing numerical and logical information and the power of programmability; practical ability to implement useful computing tools

Outcomes

Understanding of computer mechanisms for representing and analyzing numerical and logical information and the power of programmability; practical ability to implement useful computing tools
COMP 141  Introduction to Computing Tools and Techniques  (3 Credit Hours)  
This course introduces students to the Unix shell environment and essential tools for succeeding in computer science degrees. Students who complete this course will develop fluency in the Unix (Linux) environment, which is essential for solving problems in academic, research, and professional computing disciplines.
COMP 150  Introduction to Computing  (3 Credit Hours)  
The world overflows with electronic data. This course introduces programming in a simple, powerful language like Python, with selection, repetition, functions, graphical effects, and dynamic interaction with the Internet, plus connections to lower level computer organization and computer implications in the wider world. Restricted to Freshman or Sophomore standing OR majors other than COMP-BS AND CSEC-BS AND SWEN-BS.
Knowledge Area: Quantitative Knowledge  
Course equivalencies: ACCOMP 150/COMP 150  
Empowerment to manage and transform masses of data; understanding of technical, societal, and ethical issues involved

Outcomes

Empowerment to manage and transform masses of data; understanding of technical, societal, and ethical issues involved
COMP 163  Discrete Structures  (3 Credit Hours)  
Pre-requisites: MATH 117 or placement  
This course covers the mathematical foundations of computer science, including such topics as complexity of algorithms, modular arithmetic, induction and proof techniques, graph theory, combinatorics, Boolean algebra, logic circuits, and automata.
Interdisciplinary Option: Bioinformatics  
Course equivalencies: COMP211/COMP163  
The student will be prepared for the study of advanced ideas in computer science, from cryptography to databases to algorithms to computer architecture

Outcomes

The student will be prepared for the study of advanced ideas in computer science, from cryptography to databases to algorithms to computer architecture
COMP 170  Introduction to Object-Oriented Programming  (3 Credit Hours)  
Pre-requisites: MATH 118 or Placement or COMP 125 or COMP 141 or COMP 150 or COMP 180 or permission or SCPS student; Prior experience with a procedural programming language is sufficient to obtain permission to enroll  
This programming intensive course with its weekly lab component introduces basic concepts of object-oriented programming in a language such as Java.
Interdisciplinary Option: Bioinformatics  
Course equivalencies: COMP170/ISOM/INFS370  
Ability to take a problem, break it into parts, specify algorithms, and express a solution in terms of variables, data types, input/output, repetition, choice, arrays, subprograms, classes, and objects; ability to judge a good program

Outcomes

Ability to take a problem, break it into parts, specify algorithms, and express a solution in terms of variables, data types, input/output, repetition, choice, arrays, subprograms, classes, and objects; ability to judge a good program
COMP 171  Scripting Languages  (1 Credit Hour)  
Scripting languages are rapid prototyping languages that are used extensively. This course covers the principles, syntax and semantics of widely used scripting languages.
Students will learn how a program can be put together quickly and efficiently to solve problems

Outcomes

Students will learn how a program can be put together quickly and efficiently to solve problems
COMP 180  Computing and Data Analysis for the Sciences  (3 Credit Hours)  
Scientific computing emphasizes data analysis and visualization in a scientific context - analyzing data quickly for understanding by the individual, sharing automated workflows with collaborators, and preparing results for later publication. This course will emphasize rapid, interactive, and reproducible collaborative analysis of data for scientific contribution. Students are required to have taken MATH 117: College Algebra as a prerequisite or to have been placed in MATH 118: Precalculus or higher. At the end of this course, students will be well versed in the use of a specific, interactive environment for data analysis (likely Python, R, or MATLAB as indicated in the course notes) for analyzing data and sharing results.
Interdisciplinary Option: Neuroscience  
COMP 215  Object Oriented Programming with Mathematics  (3 Credit Hours)  
Pre-requisites: MATH 132 or MATH 162 or MATH 162A  
This is an introductory programming course for students interested in mathematics and scientific computing. Students will program primarily in a general object-oriented language such as Python, with supplementary exercises in a computer algebra system. Examples will be drawn primarily from applications of calculus, elementary number theory, and cryptography.
Course equivalencies: X-COMP215/MATH215  
Students will learn basic scripting and object-oriented programming, with the goal of being able to solve mathematical and scientific problems

Outcomes

Students will learn basic scripting and object-oriented programming, with the goal of being able to solve mathematical and scientific problems
COMP 231  Data Structures & Algorithms for Informatics  (3 Credit Hours)  
Pre-requisites: (MATH/COMP 215 OR COMP 170) AND (COMP 141 OR AMTH-BS OR MATH-BS) Advisory: MATH/COMP 215 preferred  
This course introduces data structures and algorithms that are essential for data science and informatics. Here we will focus on identifying the right method for storing data and using the most efficient algorithm for analysis. A subset of data structures and algorithms fundamental to computer science will be covered.
Students will learn fundamental data structures and algorithms frequently used in informatics and data science; Students will be able to apply this knowledge for data analysis

Outcomes

Students will learn fundamental data structures and algorithms frequently used in informatics and data science; Students will be able to apply this knowledge for data analysis
COMP 250  Introduction to Scientific and Technical Communication  (3 Credit Hours)  
Pre-requisites: A minimum grade of C- in COMP 125 or COMP 150 or COMP 170 or COMP/MATH 215  
This course trains students in writing clear, readable, and well-organized technical communications, including presentations, end-user documentation, internal project documentation, and scientific papers.
Students will learn to write clear technical documentation

Outcomes

Students will learn to write clear technical documentation
COMP 251  Introduction to Database Systems  (3 Credit Hours)  
Pre-requisites: COMP 125 or COMP 150 or COMP 170 or COMP 180 or COMP/MATH 215  
This course explores ways in which data collections are organized, stored, analyzed, and manipulated. Topics include relational databases, the SQL query language, and the basics of XML and web interfaces to data sets. Applications from a variety of domains illustrate the course's key concepts.
Course equivalencies: COMP 251 / COMP 368  
Students will organize data in ways to emphasize relationships, write simple programs to process, visualize and graphically display data, mine data for patterns, and design web interfaces to data

Outcomes

Students will organize data in ways to emphasize relationships, write simple programs to process, visualize and graphically display data, mine data for patterns, and design web interfaces to data
COMP 264  Introduction to Computer Systems  (3 Credit Hours)  
Pre-requisites: COMP 141 and (COMP 170 or MATH/COMP 215) and (coreq or prereq of COMP 163 or MATH 201); COMP 163 coreq or prereq and COMP 170 prereq preferred  
This course studies the hierarchy of abstractions and implementations that constitute a modern computer system, with a particular focus on issues of interest to programmers, typically including some systems programming instruction.
Understanding of system issues that affect the performance, correctness, or utility of user-level programs

Outcomes

Understanding of system issues that affect the performance, correctness, or utility of user-level programs
COMP 266  Digital Electronics Lab  (3 Credit Hours)  
Combinatorial and sequential logic devices, oscillators and timers, microprocessor components, CPU operation, computer architecture and digital/analog conversion.
Course equivalencies: X-PHYS266/COMP266  
Students will gain a working knowledge of digital electronics design and its application to computers, an understanding of CPU design and operation and the ability to document and report experimental results

Outcomes

Students will gain a working knowledge of digital electronics design and its application to computers, an understanding of CPU design and operation and the ability to document and report experimental results
COMP 271  Data Structures I  (3 Credit Hours)  
Pre-requisites: COMP 141 and COMP 170 and (co-requisite or pre-requisite of COMP 163 (preferred) or MATH 201); For Bioinformatics majors, pre-requisite of COMP 141 and COMP 170; For SCPS students, pre-requisite of COMP 170  
This course studies basic data structures including array lists, linked lists, stacks, queues, binary trees, and hash tables. Efficiency of data structure operations, study of recursion, applications of data structures, and simple analysis of algorithms are covered.
Interdisciplinary Option: Bioinformatics  
Students learn linear data structures and the performance of their operations, and they learn to solve simple computational problems by designing suitable algorithms and efficient data structures

Outcomes

Students learn linear data structures and the performance of their operations, and they learn to solve simple computational problems by designing suitable algorithms and efficient data structures
COMP 272  Data Structures II  (3 Credit Hours)  
Pre-requisites: COMP 271 and (COMP 163 or MATH 201) and (MATH 131 or MATH 161)  
This course studies advanced abstract data types, such as sets, maps, and graphs, and their implementation using arrays and dynamically allocated nodes in an object-oriented language. The course also studies the performance of the data structures built-in operations and related algorithms such as sorting, searching, and traversing.
Students learn non-linear data structures and runtime performance of their operations, solve computational problems by choosing suitable data structures, and implement algorithms within the object-oriented paradigm

Outcomes

Students learn non-linear data structures and runtime performance of their operations, solve computational problems by choosing suitable data structures, and implement algorithms within the object-oriented paradigm
COMP 301  Introduction to Computer Security  (3 Credit Hours)  
Pre-requisites: COMP 170  
This is an introductory course on computer security covering a broad range of topics, including basic security goals, encryption, penetration testing, software exploitation, reverse engineering, packet sniffing, and secure coding. The course teaches both the principles and concepts of computer security as well as some of the tools and technologies. Students will learn to think like an adversary, find and exploit vulnerabilities in computer and network systems, understand cryptography and security goals, and learn about some of the commonly-used tools.
COMP 305  Database Administration  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 251 or COMP 271  
Business and scientific institutions increasingly use large commercial data base systems. This course teaches the theory and practice for the definition, security, backup, tuning, and recovery of these systems.
Students will be able to use theory and pragmatic approaches to define and implement realistic solutions for large database administration environments

Outcomes

Students will be able to use theory and pragmatic approaches to define and implement realistic solutions for large database administration environments
COMP 306  Data Mining  (3 Credit Hours)  
Pre-requisites: (COMP 231 or COMP 251 or COMP 271) and (STAT 103 or STAT 203 or ISSCM 241 or PSYC 304 or instructor permission)  
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 marketing
COMP 309  Numerical Methods  (3 Credit Hours)  
Pre-requisites: (COMP 170 or MATH/COMP 215), and [ (MATH 212, and MATH 264) or MATH 266]  
This course offers an introduction to topics such as error analysis, interpolation and approximation, and the numerical solution of problems involving differentiation, integration, and ordinary and partial differential equations. Students will obtain an understanding of how numerical methods can be used in a variety of areas of mathematics.
Course equivalencies: X-COMP309/MATH309  
COMP 310  Operating Systems  (3 Credit Hours)  
Pre-requisites: COMP 264 and COMP 272  
This course introduces principles of operating systems and how they are designed. Various important parts of operating systems such as memory addressing, file structures, processes, and threads are covered.
Students will learn the different parts of an operating system at a functional level and how they interact with each other

Outcomes

Students will learn the different parts of an operating system at a functional level and how they interact with each other
COMP 312  Open Source Software Practicum  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 271 or instructor permission  
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.
This course satisfies the Engaged Learning requirement.  
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 effectively
COMP 313  Object-Oriented Design  (3 Credit Hours)  
Pre-requisites: COMP 272  
Object-orientation continues to be a dominant approach to software development. This intermediate programming-intensive course studies the use of classes and objects with an emphasis on collaboration among objects.
A thorough understanding of the principles of object-orientation: abstraction, delegation, inheritance, and polymorphism; exposure to basic design patterns; programming experience in mainstream object-oriented languages such as C++ and Java

Outcomes

A thorough understanding of the principles of object-orientation: abstraction, delegation, inheritance, and polymorphism; exposure to basic design patterns; programming experience in mainstream object-oriented languages such as C++ and Java
COMP 314  Problem Solving Strategies I  (1 Credit Hour)  
Pre-requisites: COMP 271  
Corequisite or This course allows students to sharpen problem-solving skills along with, or as part of, the ACM Programming Team. Groups generally work on old competition problems on alternate weekends, with short follow-ups during the next week.
Course equivalencies: COMP281/COMP314  
Ability to work in small groups, quickly and accurately assessing and solving focused problems involving many sorts of programming knowledge

Outcomes

Ability to work in small groups, quickly and accurately assessing and solving focused problems involving many sorts of programming knowledge
COMP 315  Problem Solving Strategies II  (2 Credit Hours)  
Pre-requisites: COMP 314  
This course allows students to sharpen problem-solving skills along with, or as part of, the ACM Programming Team. Groups generally work on old competition problems on alternate weekends, with short follow-ups during the next week.
Ability to lead a small group, quickly and accurately assessing and solving focused problems involving many sorts of programming knowledge

Outcomes

Ability to lead a small group, quickly and accurately assessing and solving focused problems involving many sorts of programming knowledge
COMP 317  Social, Legal, and Ethical Issues in Computing  (3 Credit Hours)  
Pre-requisites: Any COMP course and Ethics Core  
This course covers social, legal, and ethical issues commonly arising in key areas related to computing technologies.
Interdisciplinary Option: Sociolegal Studies  
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 system
COMP 319  Introduction to UNIX  (1 Credit Hour)  
Pre-requisites: COMP 170 and COMP/MATH 215  
An introduction to the UNIX operating system. Topics include files and directories, electronic mail, security, advanced file systems, network utilities, network file sharing, text utilities, shell programming, UNIX internals, UNIX system administration (essentials), the X windowing system, systems programming, and secure shell (SSH).
Course equivalencies: COMP219/COMP319  
After taking this course, students will develop working knowledge of Unix and be able to use modern Unix operating systems such as Linux, OS X, or Solaris

Outcomes

After taking this course, students will develop working knowledge of Unix and be able to use modern Unix operating systems such as Linux, OS X, or Solaris
COMP 321  Computational Aspects of Modeling and Simulation  (3 Credit Hours)  
Pre-requisites: STAT 203 or STAT 335  
This course uses SAS and R languages to address statistical modelling and to conduct statistical simulations to assess linear, generalized linear, nonlinear and complex models and experimental designs.
Course equivalencies: X-STAT356/COMP321/STAT321  
Students will gain practical experience and knowledge in real-world statistical situations for which underlying theory is cumbersome or intractable

Outcomes

Students will gain practical experience and knowledge in real-world statistical situations for which underlying theory is cumbersome or intractable
COMP 322  Software Development for Wireless and Mobile Devices  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 271  
This course will focus on the unique challenges, methods, tools, and technologies for developing software applications for wireless and mobile devices, smart mobile phones, and the growing world of mobile connected devices.
1) Understand challenges of software design for resource limited devices; 2) Know the architecture of one or more state-of-the-art mobile operating systems; 3) Gain experience designing, developing, testing embedded software

Outcomes

1) Understand challenges of software design for resource limited devices; 2) Know the architecture of one or more state-of-the-art mobile operating systems; 3) Gain experience designing, developing, testing embedded software
COMP 323  Game Design and Development  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 271  
This course studies design, development, and publication of games and game-based applications. This includes example games and designers, industry practices, and team-based project development.
Students will acquire an awareness of different game design and development methods, technologies, and techniques suitable for the development of a variety of game based environments

Outcomes

Students will acquire an awareness of different game design and development methods, technologies, and techniques suitable for the development of a variety of game based environments
COMP 324  Client-Side Web Development  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 271  
This course covers the design and implementation of the presentation layer of dynamic web applications. Topics include visual design and usability, multi-channel and multi-modal applications, markup of static and dynamic content, and client-side executable content. HTML/CSS/JavaScript are introduced quickly, followed up with the stack of current JavaScript frameworks and libraries used in practice.
Familiarity with the most common effective tools for creating responsive, dynamic, and interactive web content with client-side tools

Outcomes

Familiarity with the most common effective tools for creating responsive, dynamic, and interactive web content with client-side tools
COMP 325  Rapid Application Development Methodology  (3 Credit Hours)  
Pre-requisites: COMP 271 with a grade of C- or above  
This course will teach students how to effect rapid application development using a software framework such as the .NET Framework. Particular emphasis will be placed on enhancing object-oriented programming skills using a language such as C#.NET.
Students will gain enhanced skill in object-oriented programming and development of such applications as database applications, web applications, Microsoft .NET services, Silverlight applications, and WCF Services

Outcomes

Students will gain enhanced skill in object-oriented programming and development of such applications as database applications, web applications, Microsoft .NET services, Silverlight applications, and WCF Services
COMP 328  Algebraic Coding Theory  (3 Credit Hours)  
Pre-requisites: MATH 212  
Codes with algebraic structure for error control are examined. Block codes including Hamming codes and Reed-Muller codes, BCH codes, and other cyclic codes with algebraic structure and other cyclic codes and their implementation are treated. Other topics may include: convolutional codes, efficiency considerations, and Shannon's fundamental theorem of information theory.
Course equivalencies: X-MATH328/COMP328  
COMP 329  Natural Language Processing  (3 Credit Hours)  
Pre-requisites: (COMP 231 or COMP 271) and (MATH 131 or MATH 161) and (STAT 103 or STAT 203 or ISSCM 241 or PSYC 304 or instructor permission)  
This course provides an introduction to the field of natural language processing (NLP). NLP is concerned with computational approaches to analyzing, generating, and understanding human language. This course will introduce the students to the problems, methods, and applications of NLP.
Students will become familiar with such areas of natural language processing as information retrieval, sentiment analysis, machine translation, document classification, and question answering

Outcomes

Students will become familiar with such areas of natural language processing as information retrieval, sentiment analysis, machine translation, document classification, and question answering
COMP 330  Software Engineering  (3 Credit Hours)  
Pre-requisites: COMP 271  
Students learn 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 others
COMP 331  Mathematical Foundations of Cryptography  (3 Credit Hours)  
Pre-requisites: Theoretical Foundations: MATH 201 or COMP 363; Programming Foundations: COMP125 or COMP150 or COMP170 or COMP 180 or COMP/MATH 215  
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-COMP331/MATH331  
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 needed
COMP 332  Requirements Engineering  (3 Credit Hours)  
Pre-requisites: COMP 330  
This course aims to equip students with techniques for successful requirements analysis and requirements engineering (RE) of software-intensive systems. Students will learn a systematic process of developing requirements through co-operative problem analysis, representation, and validation.
Students will learn and apply the current state of the art in requirements engineering and a systematic method for engineering high-quality requirements on realistic large-scale projects

Outcomes

Students will learn and apply the current state of the art in requirements engineering and a systematic method for engineering high-quality requirements on realistic large-scale projects
COMP 333  Web Services Programming  (3 Credit Hours)  
Pre-requisites: COMP 313  
Web services are building blocks for enterprise applications that use open data exchange standards and transport protocols to exchange data with calling clients. This course studies the architectures, frameworks, and tools required to develop and compose web services and clients, as well as integrate service-oriented systems with legacy systems.
An understanding of the design space of software architecture; Proficiency in designing, implementing, deploying and composing systems from web services

Outcomes

An understanding of the design space of software architecture; Proficiency in designing, implementing, deploying and composing systems from web services
COMP 335  Formal Methods in Software Engineering  (3 Credit Hours)  
Pre-requisites: COMP 313  
As embedded and networked systems are becoming ever more ubiquitous, we depend increasingly on the correctness of the software that controls such systems. This course studies the formal specification, verification, and synthesis of software.
An understanding of the role of formal methods in the construction of software systems; proficiency in representative methods and tools, such as UML and ESC

Outcomes

An understanding of the role of formal methods in the construction of software systems; proficiency in representative methods and tools, such as UML and ESC
COMP 336  Markup Languages  (3 Credit Hours)  
Pre-requisites: COMP 231 or 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 services
COMP 337  Concurrent Programming  (3 Credit Hours)  
Pre-requisites: COMP 313  
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 development
COMP 338  Server-based Software Development  (3 Credit Hours)  
Pre-requisites: COMP 313  
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 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 development
COMP 339  Distributed Systems  (3 Credit Hours)  
Pre-requisites: COMP 313 or COMP 363 or COMP 310  
This course covers topics in modern distributed systems. This course places special emphasis on scalability (performance), reliability/fault tolerance, and security.
After taking this course, students should understand the essential ingredients of distributed systems and how to build distributed systems that are resilient to transient network failures and other potential anomalies

Outcomes

After taking this course, students should understand the essential ingredients of distributed systems and how to build distributed systems that are resilient to transient network failures and other potential anomalies
COMP 340  Computer Forensics  (3 Credit Hours)  
Pre-requisites: (COMP 150 or COMP 170 or COMP/MATH 215) and (COMP 264 or COMP 317 or COMP 343)  
The 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 protocols
COMP 341  Human-Computer Interaction  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 271  
Limitations in human-computer interaction are as much due to human factors, cognitive limits, expectations, motivations, and inertia as technological capabilities. Systematic methods will be used to evaluate and improve designs through both qualitative feedback and statistical, hypothesis-driven testing on web pages, GUIs, mobile apps and many non-traditional interfaces.
Students will be exposed to a wide array of non-traditional computing interfaces, and be able to evaluate, design and develop better human-computer interfaces using research-based, systematic approaches

Outcomes

Students will be exposed to a wide array of non-traditional computing interfaces, and be able to evaluate, design and develop better human-computer interfaces using research-based, systematic approaches
COMP 342  Introduction to Web Application Development  (3 Credit Hours)  
Pre-requisites: COMP 170  
An introduction to webpage development using JavaScript, jQuery and associated client-side tools.
Course equivalencies: X- DIGH403/CPST342/COMP342  
Students will be able to create webpages using JavaScript and related tools and protocols, and interface a webpage with a database

Outcomes

Students will be able to create webpages using JavaScript and related tools and protocols, and interface a webpage with a database
COMP 343  Computer Networks  (3 Credit Hours)  
Pre-requisites: COMP 264 or COMP 271 or instructor permission  
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. Some programming may be required.
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 addressed
COMP 344  Hands-on Approach to Security & Privacy  (3 Credit Hours)  
Pre-requisites: COMP 301  
This course will introduce students to privacy, cybersecurity competitions, and how computers can be compromised and secured.
Students will start thinking like an adversary, learn how to find exploits in software and computer networks, and how to be a cybersecurity professional

Outcomes

Students will start thinking like an adversary, learn how to find exploits in software and computer networks, and how to be a cybersecurity professional
COMP 345  Internet of Things Device and Application Security  (3 Credit Hours)  
Pre-requisites: COMP 301  
It introduces the Internet of Things (IoT) comprising embedded devices and cloud-based resources. The course studies concepts and techniques used in designing and implementing IoT systems providing valuable functionality to consumers and valuable data to organizations. The course discusses methods for addressing related safety, security, reliability, and privacy concerns.
Ability to design and implement secure software and establish safety, security, reliability, and privacy goals for embedded and IoT-based systems; Ability to visualize and analyze data from an IoT system

Outcomes

Ability to design and implement secure software and establish safety, security, reliability, and privacy goals for embedded and IoT-based systems; Ability to visualize and analyze data from an IoT system
COMP 346  Telecommunications  (3 Credit Hours)  
Pre-requisites: COMP 264 or COMP 271  
This course introduces the fundamental concepts of telecommunication networks, including requirements of voice networks, analog versus digital transmission, data link protocols, SONET, ATM, cellular phone systems, and the architecture of the current telephone system.
Students will understand how modern telephone systems work

Outcomes

Students will understand how modern telephone systems work
COMP 347  Intrusion Detection and Security  (3 Credit Hours)  
Pre-requisites: COMP 301  
This course covers techniques and algorithms for detecting unusual usage patterns that typically signal a break-in, including techniques for detecting evasive or stealthy attacks. Also covered are differences in detecting local versus network intruders. Additional topics: computer viruses, computer security management, computer forensics.
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 techniques
COMP 348  Network Security  (3 Credit Hours)  
Pre-requisites: COMP 301  
This course involves a discussion of network security through the following areas which lead to an overall security posture: Security Frameworks, Implementation Security, System Best Practices, a Case for Centralized Configuration Management, Network Security Architecture, Standards Adherence, Risk Assessments, Testing and Review and Application Security.
An understanding of how to secure networks using encryption, authentication, perimeter protection, restricted access policies, intrusion detection/prevention and other security frameworks

Outcomes

An understanding of how to secure networks using encryption, authentication, perimeter protection, restricted access policies, intrusion detection/prevention and other security frameworks
COMP 349  Wireless Networking and Security  (3 Credit Hours)  
Pre-requisites: COMP 301  
This course will explore the wireless standards, authentication issues, and common configuration models for commercial versus institutional installations 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 issues
COMP 351  Network Management  (3 Credit Hours)  
Pre-requisites: COMP 264 or COMP 271  
This course introduces the current state of the art in automated management of computer networks, including protocols such as SNMP and its attendant naming conventions, network management systems, and important issues in administrative network configuration.
Students will become familiar with the SNMP protocol, with how large-scale Network Management Systems operate and are configured, and with advanced network configuration

Outcomes

Students will become familiar with the SNMP protocol, with how large-scale Network Management Systems operate and are configured, and with advanced network configuration
COMP 352  Computer Vulnerabilities  (3 Credit Hours)  
Pre-requisites: COMP 264 and COMP 301  
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 at the machine-code level and how they can be leveraged into an attack; Run a virus in a virtual-machine sandbox with appropriate monitoring

Outcomes

Describe some recent computer software vulnerabilities at the machine-code level and how they can be leveraged into an attack; Run a virus in a virtual-machine sandbox with appropriate monitoring
COMP 353  Database Programming  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 251 or COMP 271  
This course introduces relational and object databases to support database creation and application development. Use of commercial database products will give a practical orientation.
Course equivalencies: COMP353/BIOI353  
Students will learn SQL, database design and application development using the latest software tools; Students will also learn techniques for web based data retrieval and manipulation

Outcomes

Students will learn SQL, database design and application development using the latest software tools; Students will also learn techniques for web based data retrieval and manipulation
COMP 358  Big Data Analytics  (3 Credit Hours)  
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. ((Database experience: COMP 251 OR COMP 305 OR COMP 353) AND (Analytics experience: COMP 300 OR COMP 379 OR STAT 338 OR STAT 308)) OR permission of instructor.
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 learning
COMP 362  Computer Architecture  (3 Credit Hours)  
This course covers computer design from the level of digital logic and circuit design to high-level computer organization.
Course equivalencies: COMP 260 / COMP 275 / COMP 362  
A basic understanding of how computers work at many levels and how to use various analytical tools and techniques to design computer components

Outcomes

A basic understanding of how computers work at many levels and how to use various analytical tools and techniques to design computer components
COMP 363  Design and Analysis Computer Algorithms  (3 Credit Hours)  
Pre-requisites: COMP 272 and (MATH 132 or MATH 162)  
Theoretical design and analysis of computer algorithms may be supplemented by small amounts of programming.
Interdisciplinary Option: Bioinformatics  
Course equivalencies: X-COMP363/BIOI363  
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

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
COMP 364  High Performance Computing  (3 Credit Hours)  
Pre-requisites: COMP 264 and COMP 272  
This course covers parallel architectures and parallel models of computation. Algorithms for achieving high performance in various computational contexts are discussed. Models such as shared memory, message passing, and hybrid modes of computing are introduced.
Students will learn how to engineer solutions to practical problems in multiprocessor architectures and using large physical memories

Outcomes

Students will learn how to engineer solutions to practical problems in multiprocessor architectures and using large physical memories
COMP 366  Microcomputer Design & Interfacing  (3 Credit Hours)  
Pre-requisites: COMP 271  
This course covers computer architecture, CPU logic, data acquisition, signal conditioning, analog/digital conversion and computer interfacing.
Course equivalencies: X-PHYS366/COMP366  
Students will gain a working knowledge of interfacing techniques and design, hands-on experience with professional interfacing hardware and software, and the ability to document and report experimental results

Outcomes

Students will gain a working knowledge of interfacing techniques and design, hands-on experience with professional interfacing hardware and software, and the ability to document and report experimental results
COMP 367  Robotics Software Development  (3 Credit Hours)  
Pre-requisites: COMP 271; COMP 313 recommended  
This course is an introduction to robotics and robotic software development using humanoid robots. The course will use modern robot platforms and provide hands on experience with robotic sensor systems, motion and navigation, robot behavior planning and implementation.
Students will explore the history of robotics, overview the theory of autonomous robotic systems, and develop complete robot projects

Outcomes

Students will explore the history of robotics, overview the theory of autonomous robotic systems, and develop complete robot projects
COMP 369  Physical Design and Fabrication  (3 Credit Hours)  
This course explores the role of products in the economy and how things are made, including: product conceptualization and design, physical design vs. design of things that are not physical, rapid prototyping, 3D printing, 2D conceptualization and sketching, 3D modeling, and design reviews.
Students will be able to visualize ideas via sketching basic shapes, create 3D models using 3D modeling software, use a 3D Printer, and give constructive feedback in peer review sessions

Outcomes

Students will be able to visualize ideas via sketching basic shapes, create 3D models using 3D modeling software, use a 3D Printer, and give constructive feedback in peer review sessions
COMP 370  Software Quality  (3 Credit Hours)  
Pre-requisites: COMP 330  
The course teaches software testing and quality control concepts, principles, and techniques including black box and white box testing, coverage testing, test case development, and regression testing.
Students will learn how to prevent errors, how to get 'bugs' out of software, and be able to apply this knowledge in other courses and projects

Outcomes

Students will learn how to prevent errors, how to get 'bugs' out of software, and be able to apply this knowledge in other courses and projects
COMP 371  Programming Languages  (3 Credit Hours)  
Pre-requisites: COMP 264 and COMP 272  
There are over two thousand programming languages. This course studies several languages that represent the much smaller number of underlying principles and paradigms.
An understanding of key principles and paradigms underlying the design and implementation of commonly used programming languages; exposure to formal mechanisms for describing language syntax and semantics; programming experience in several representative languages

Outcomes

An understanding of key principles and paradigms underlying the design and implementation of commonly used programming languages; exposure to formal mechanisms for describing language syntax and semantics; programming experience in several representative languages
COMP 373  Advanced Object-Oriented Programming  (3 Credit Hours)  
Pre-requisites: COMP 313  
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 development
COMP 376  Formal Languages & Automata  (3 Credit Hours)  
Pre-requisites: COMP 163 or MATH 201 or MATH 212 or MATH 266  
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-COMP376/MATH376  
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 science
COMP 377  IT Project Management  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 251 or COMP 271  
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, a 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 projects
COMP 378  Artificial Intelligence  (3 Credit Hours)  
Pre-requisites: COMP 231 or COMP 271  
This course introduces artificial intelligence theory and programming.
Student will learn basic theory of artificial intelligence and be able to build small applications based on it

Outcomes

Student will learn basic theory of artificial intelligence and be able to build small applications based on it
COMP 379  Machine Learning  (3 Credit Hours)  
Pre-requisites: (COMP 231 or COMP 271) and (STAT 103 or STAT 203 or ISSCM 241 or PSYC 304 or instructor permission)  
Machine learning is the process of making predictions and decisions from data without being explicitly programmed. Topics include a variety of supervised learning methods. Ensemble approaches are used to combine independent models efficiently. Unsupervised and semi-supervised methods demonstrate the power of learning from data without an explicit training goal.
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 making
COMP 380  Computer Graphics  (3 Credit Hours)  
Pre-requisites: COMP 271  
This course introduces 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 OpenGL
COMP 381  Bioinformatics  (3 Credit Hours)  
Students will engage in the applications of computer-based tools and database searching to better understand the fields of genetics, genomics, evolutionary biology, and personalized medicine. Students will be introduced to scripting programming languages for analyzing biological data sets.
Interdisciplinary Option: Bioinformatics  
Course equivalencies: X-BIOL388/COMP381/BIOI388  
Students will be able to appropriately use computer software and databases to accurately analyze biological data and interpret the results, applying their understanding of genetic processes

Outcomes

Students will be able to appropriately use computer software and databases to accurately analyze biological data and interpret the results, applying their understanding of genetic processes
COMP 382  Compiler Construction  (3 Credit Hours)  
Pre-requisites: COMP 264 and 272  
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 how a compiler is built

Outcomes

Students will learn how a compiler is built
COMP 383  Computational Biology  (4 Credit Hours)  
Pre-requisites: (COMP 231 or COMP 271) and COMP 381 (Equivalencies: BIOI/BIOL 388)  
This course presents an algorithmic focus to problems in computational biology. It is built on earlier courses on algorithms and bioinformatics. Problems and solutions covered in this course include gene hunting, sequence comparison, multiple alignment, gene prediction, trees and sequences, databases, and rapid sequence analysis.
Interdisciplinary Option: Bioinformatics  
Course equivalencies: COMP383/BIOI383  
Students will learn, in detail, foundational methods and algorithms in bioinformatics

Outcomes

Students will learn, in detail, foundational methods and algorithms in bioinformatics
COMP 386  Computational Neuroscience  (3 Credit Hours)  
Pre-requisites: C- or better in COMP 150 or COMP 170 or COMP 180  
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.
Interdisciplinary Option: Neuroscience  
Appreciation that many aspects of neuroscience cannot be understood without appropriate mathematical or computational frameworks, and ability to adeptly apply these frameworks in the various domains of neuroscience

Outcomes

Appreciation that many aspects of neuroscience cannot be understood without appropriate mathematical or computational frameworks, and ability to adeptly apply these frameworks in the various domains of neuroscience
COMP 388  Topics in Computer Science  (1-6 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 Science
COMP 390  Broadening Participation in STEM (Computing, Math & Science)  (1-3 Credit Hours)  
Students will learn about underrepresentation of various population groups in STEM fields (science, technology, engineering, mathematics), as well as some of the reasons and negative effects of this situation. They will learn about techniques and educational materials for ameliorating this situation and will engage in relevant service learning activities.
This course satisfies the Engaged Learning requirement.  
Students gain first-hand experience with broadening STEM participation and seeing how they can make a difference in the lives of other students and contribute to national needs

Outcomes

Students gain first-hand experience with broadening STEM participation and seeing how they can make a difference in the lives of other students and contribute to national needs
COMP 391  Internship in Computer Science  (1-6 Credit Hours)  
Students work outside the classroom applying and extending their computer science skills, typically for at least 150 hours for 3 credits. A memorandum of understanding is required between a student, his or her employer, and the Undergraduate Program Director, followed by final reports from the student and the employer.
This course satisfies the Engaged Learning requirement.  
Application of classroom skills to real-world situations

Outcomes

Application of classroom skills to real-world situations
COMP 392  Metagenomics  (3 Credit Hours)  
Pre-requisites: BIOL 282  
Exploration of next-generation sequencing technologies for assessing microbial diversity in ecological niches.
Interdisciplinary Option: Bioinformatics  
This course satisfies the Engaged Learning requirement.  
Course equivalencies: X-COMP 384/BIOL 392/COMP 392  
Students will gain hands-on experience with metagenomic methodologies while working in an interdisciplinary, collaborative setting

Outcomes

Students will gain hands-on experience with metagenomic methodologies while working in an interdisciplinary, collaborative setting
COMP 395  Professional Development & Career Growth in CompSci/IT  (1 Credit Hour)  
Pre-requisites: Sophomore standing and any COMP course  
This course is designed specifically for students pursuing a degree in computing-related fields, for example, Computer Science, Information Technology, Software Engineering, and Cybersecurity. They will learn about ways to develop themselves professionally, communicate their strengths, expand their contacts, and advance their careers. Students should acquire skills to professionally brand themselves, successfully network in technical circles, perform an effective job/internship search, and conduct themselves well in interviews.
COMP 397  Research Methods in Computer Science  (1 Credit Hour)  
Supplements CS Seminar by targeting students directly engaging in research and facilitating contributions in ongoing projects. Progress in outside projects tracked through milestones such as abstracts, small fellowship-style proposals, informal updates, and outcome-oriented goal setting. Emphasizes creating lasting impacts through establishing project continuity and presenting posters, papers, and slide shows.
Regular progress on research projects and final presentations of results for demonstration to department faculty and students, and potential use at professional conferences

Outcomes

Regular progress on research projects and final presentations of results for demonstration to department faculty and students, and potential use at professional conferences
COMP 398  Independent Study  (1-6 Credit Hours)  
The student and a sponsoring faculty member will determine an advanced topic for the student to work on.
This course satisfies the Engaged Learning requirement.  
Knowledge of an advanced topic

Outcomes

Knowledge of an advanced topic
COMP 399  Computer Science Seminar  (1 Credit Hour)  
The department seminar is designed to bring together students interested in understanding and engaging in extracurricular applications of computer science, with a focus on ongoing research. Speakers will include department faculty, research students, and invited outside speakers. Students will be asked to read relevant literature and participate in discussions.
Course equivalencies: COMP 399H / COMP 399  
Students will be exposed to a wide range of topics in computer science, participate in discussions, and provide feedback to assess their general understanding of the presented material

Outcomes

Students will be exposed to a wide range of topics in computer science, participate in discussions, and provide feedback to assess their general understanding of the presented material
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 object
COMP 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 operations
COMP 400C  Data Structures II  (3 Credit Hours)  
Pre-requisites: COMP 400B and COMP 400D  
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 paradigm
COMP 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) environment
COMP 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 circuits
COMP 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 project
COMP 403  Operations Management  (3 Credit Hours)  
Pre-requisites: COMP 150 or COMP 170  
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 making
COMP 404  Organizational Development  (3 Credit Hours)  
Pre-requisites: COMP 251 or COMP 271  
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 leadership
COMP 405  Database Administration  (3 Credit Hours)  
Pre-requisites: COMP 251 or COMP 271  
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 security
COMP 406  Data Mining  (3 Credit Hours)  
Pre-requisites: COMP 251 or COMP 271  
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 marketing
COMP 409  Advanced Numerical Analysis  (3 Credit Hours)  
Pre-requisites: (COMP 170 or COMP/MATH 215), MATH 212, and MATH 264  
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 applications
COMP 410  Operating Systems  (3 Credit Hours)  
Pre-requisites: COMP 271 and COMP 264  
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 topics
COMP 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 effectively
COMP 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 development
COMP 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 system
COMP 418  Combinatorial Mathematics  (3 Credit Hours)  
Pre-requisites: MATH 313 or COMP 163  
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 combinatorics
COMP 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 implementation
COMP 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 simulation
COMP 422  Software Development for Wireless and Mobile Devices  (3 Credit Hours)  
Pre-requisites: COMP 313 or 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 programming
COMP 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 systems
COMP 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 technologies
COMP 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 codes
COMP 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 choice
COMP 431  Cryptography  (3 Credit Hours)  
Pre-requisites: COMP 271 and (Comp 163 or MATH 313 or MATH 201) or Permission  
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 needed
COMP 433  Web Services Programming  (3 Credit Hours)  
Pre-requisites: COMP 313 or 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 services
COMP 434  Enterprise Software Development  (3 Credit Hours)  
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 beans
COMP 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 services
COMP 437  Intro Concurrent Programming  (3 Credit Hours)  
Pre-requisites: COMP 313 or 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 development
COMP 439  Distributed Systems  (3 Credit Hours)  
Pre-requisites: COMP 313 and COMP 264; COMP 374 recommended  
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 systems
COMP 440  Computer Forensics Investigations  (3 Credit Hours)  
Pre-requisites: (COMP 150 or COMP 170 or COMP/MATH 215) AND (COMP 264 or COMP 317 or COMP 343)  
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 protocols
COMP 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 interfaces
COMP 442  Server-Side Software Development  (3 Credit Hours)  
Pre-requisites: COMP 313 or COMP 413  
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 development
COMP 443  Computer Networks  (3 Credit Hours)  
Pre-requisites: COMP 271 or COMP 264  
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 addressed
COMP 445  Internet of Things Device and Application Security  (3 Credit Hours)  
Pre-requisites: COMP 348 AND (COMP 264 or COMP 271)  
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 IoT
COMP 446  Telecommunications  (3 Credit Hours)  
Pre-requisites: COMP 271 or COMP 264  
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 system
COMP 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 techniques
COMP 448  Network Security  (3 Credit Hours)  
Pre-requisites: COMP 271 or COMP 447  
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 environments
COMP 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 issues
COMP 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 mechanisms
COMP 452  Introduction to Computer Vulnerabilities  (3 Credit Hours)  
Pre-requisites: COMP 264 and COMP 347  
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 level
COMP 453  Database Programming  (3 Credit Hours)  
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 manipulation
COMP 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 learning
COMP 460  Algorithms & Complexity  (3 Credit Hours)  
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 classes
COMP 462  Advanced Computer Architecture  (3 Credit Hours)  
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 systems
COMP 464  High-Performance Computing  (3 Credit Hours)  
Pre-requisites: COMP 313 or 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 systems
COMP 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 Oracle
COMP 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 sessions
COMP 470  Software Quality and Testing  (3 Credit Hours)  
Pre-requisites: COMP 163 or COMP 271 or permission of Instructor  
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 errors
COMP 471  Theory of Programming Languages  (3 Credit Hours)  
Pre-requisites: COMP 313 or 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: COMP 313 or 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 compiler
COMP 473  Advanced Object Oriented Programming  (3 Credit Hours)  
Pre-requisites: COMP 313 or 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 development
COMP 474  Software Engineering  (3 Credit Hours)  
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 others
COMP 476  Automata & Formal Languages  (3 Credit Hours)  
Pre-requisites: MATH 201 or MATH 212 or COMP 163  
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 science
COMP 477  IT Project Management  (3 Credit Hours)  
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 projects
COMP 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 making
COMP 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 OpenGL
COMP 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 bioinformatics
COMP 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 it
COMP 486  Computational Neuroscience  (3 Credit Hours)  
Pre-requisites: COMP 150 or COMP 170 or COMP 180 or Permission of Instructor  
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 neuroscience
COMP 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 task
COMP 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 Science
COMP 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 Instruction
COMP 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 management
COMP 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.