Why Ë¿¹ÏÊÓƵ?
Whatever your background, Ë¿¹ÏÊÓƵ can provide you with the skills and experience you need to realize your dreams.
Why Ë¿¹ÏÊÓƵ?
Whatever your background, Ë¿¹ÏÊÓƵ can provide you with the skills and experience you need to realize your dreams.
Undergraduate Studies
We offer an undergraduate program of study that’s small enough to be personal
Graduate Studies
Pursuing your dream career starts with the next phase of your education. When you enroll in graduate school at Ë¿¹ÏÊÓƵ, you’re beginning more than advanced training in your field; you’re accelerating your professional journey.
CIS140. Computer Applications for Business (3).
A practical course in business problem solving, decision making, and presentation of information utilizing microcomputer technology. Through business problem simulations, the student will actively solve problems while learning about microcomputer hardware configuration, operating systems, and common business microcomputer software including spreadsheets, database management systems, and business graphics. (Prerequisite: MATH101).
CIS199. Exploratory Internship (1-3).
CIS201. Introduction to Data Science (3).
In this course, students learn how to gather, clean, normalize, visualize, and analyze data to drive informed decision-making, using spreadsheets, SQL, Python, and other tools to work collaboratively on real-world datasets. (Prerequisite: CS103; Co-requisite: CIS201L).
CIS201L. Introduction to Data Science Lab (1).
In-class projects to accompany CIS201. (Co-requisite: CIS201).
CIS250. Advanced Web-Based Programming (3).
The use of advanced programming techniques, using server-side software to develop dynamic web pages. Discussion of relevant human interface issues. (Prerequisite: CS110).
CIS299. Experimental Course (1-3).
CIS399. Professional Internship (1-12).
CIS451. Independent Study (1-3).
CIS499. Advanced Experimental Course (1-3).
CS100. Internet History, Technology, and Security (3).
This course will explain the Internet and how it works. It introduces students to the important technological issues currently facing society. Topics include the history of the Internet including commercialization and growth, computer generations, Internet and packets, transport control protocol, application protocols, security, and web security. This course is a great lead-in to web design, web development, programming, or even network administration. (Students cannot take CS100 and CS101 for credits towards a Computer Science minor or major. CS100 does not substitute for CS101).
CS101. Introduction to Computer Science (3).
This course gives students a broad look at Computer Science from both software and hardware perspectives. It introduces topics on the Internet as a global information infrastructure, computer networks, Internet browsing tools, HTML, data structures, algorithm problem solving, overview of computer organization, number systems, switching algebra, logic gates, security, and computing ethics and society. The course will cover theoretical and practical concepts. Students will develop basic projects. (Students cannot take CS100 and CS101 for credits towards a Computer Science minor or major).
CS103. Programming for Everyone I (3).
This course aims to teach students the basics of programming using Python. It covers the basics of how one constructs a program from a series of simple instructions in Python. This course will introduce the core syntax, commands, and data structures of the Python programming language. Topics include built-in data structures such as lists, dictionaries, and tuples to perform data analysis.
CS104. Programming for Everyone II (3).
This course introduces students to the fundamentals of data access, data management, and expands upon the topics learned in CS103. Students will work with different data formats (HTML, XML, and JSON), and be introduced to the fundamentals of Structured Query Language and database design as part of a multi-step data gathering, analysis, and processing effort. As part of the course, students will build web crawlers and multi-step data gathering and visualization processes. (Prerequisite: CS103).
CS110. Web Development (3).
Web Development introduces students to HTML, CSS, and JavaScript—the core technologies which power modern websites. Students will learn how to create interactive, aesthetically pleasing websites for a variety of purposes. This course culminates with a project in which students will build a website for a real or imaginary product of their choosing. (Prerequisite: CS103).
CS151. Introduction to Games (3).
Games sit at the intersection of technology, art, and culture, so success within the games industry requires you to understand all three. This course explores why we love games, what role they play in society, and the industry that produces them. You’ll also learn the basics of game development. This course was developed in partnership with Unity and the IGDA to help everyone interested in the games industry start on the right foot.
CS199. Exploratory Internship (1-3).
Fall, Spring, May, and Summer.
CS203. Introduction to C (3).
This course introduces students to the techniques used to program in C and the necessary concepts required to understand how higher-level programming languages are developed. The concepts introduced here will help students develop an inherent understanding of how computers turn high-level code into ones and zeros and help students build more efficient programs. (Prerequisite: CS104).
CS221. Introduction to Information Technology Systems (3).
Information Technology continues to be one of the most important topics in the modern workforce. This course will introduce you to the fundamentals of the field and teach you a range of valuable professional skills, including how to set up operating systems, how to troubleshoot problems, and how to build a computer. By the end of this course, you’ll be prepared to take your next steps in IT and start solving technology problems on your own. (Prerequisite: CS100 or CS101).
CS222. Microprocessors (3).
This course is intended as an introduction to computer hardware and builds upon topics learned in CS203. It covers the techniques used to design and build microprocessors, memory, and other elements of modern-day hardware. Students will learn the fundamentals of machine language and assembly language. Students will also analyze the C compiler and learn how it produces the necessary strings of ones and zeros that will run on the hardware. (Prerequisites: CS203 and MATH135).
CS224. Networking Technologies and Telecommunications (3).
Whether a workplace is just a few people connected to a wireless router or a financial giant wired directly into the Nasdaq, it likely relies heavily on Network Technologies. This course will teach you how networks work, and how to set up and secure them. By the end of this course, you will be able to manage and maintain a range of different network types. (Prerequisite: CS221).
CS241. Cloud Computing Foundations (3).
This course will introduce students to the fundamentals of Cloud Computing, Infrastructure, and Networking, and will explore how the cloud is used in a range of situations, including IT, App Development, and Machine Learning. By the end of the course, students will know what the cloud is, and how to use it effectively. This course uses the Google Cloud Platform (GCP) and was built in concert with the Google Cloud Learning Services team. (Prerequisite: CS104).
CS242. Data Structures (3).
This course will introduce students to the fundamentals of data structures. Students will learn what a data structure is, how to perform a range of operations on them, and be introduced to the study of algorithms as it pertains to the covered data structures. Topics include linked lists, arrays, stacks, queues, trees, graphs, heaps, hashes, and the subsequent operations on the data structures such as adding elements, removing elements, and searching for an element. (Prerequisite: CS104).
CS251. Content & Systems Design (3).
If you’ve ever enjoyed the experience of playing a video game, you’ve had a first-hand lesson in how important content and systems design are. The experience of a game is driven by four major components: content, systems, narrative, and user experience. This class will help you learn to design all four components and build a deeper understanding of the game development process and an introduction to concepts in scripting. (Prerequisite: CS151).
CS262. Linux – Command Line and Shell Environments (4).
This course covers the understanding of Unix-like OSes and the use of system utilities such as file management, shells, and scripting. The students will also learn how to use text editors (non-graphic) and miscellaneous utilities. The course also covers the use of the command line in Unix-like operating systems as well as the underlying shell environments and the programming using the shell languages to automate and perform administrative operations. (Prerequisite: CS101).
CS271. Foundations of Data Analytics I (3).
In an increasingly data-driven world, everyone should be able to understand the numbers that govern our lives. Whether or not you want to work as a data analyst, being “data literate” will help you in your chosen field. In this course, you’ll learn the core concepts of inference and data analysis by working with real data. By the end of the term, you’ll be able to analyze large datasets and present your results.
CS272. Foundations of Data Analytics II (3).
This course is intended as a continuation of Foundations of Data Analytics I. In this course, you’ll learn how Data Analytics is applied within the workforce. Particular attention will be paid to the role of the Data Scientist or Analyst, machine learning, and the applications of Big Data. By the end of the term, you will be able to design and execute a range of data-driven experiments. (Prerequisite: CS271).
CS283. PostgreSQL (3).
Whether a workplace is just a few people connected to a wireless router or a financial giant wired directly into the Nasdaq, it likely relies heavily on Network Technologies. This course will teach you how networks work, and how to set up and secure them. By the end of this course, you will be able to manage and maintain a range of different network types. (Prerequisite: CS104).
CS299. Experimental Course (1-3).
CS300. Special Topics in Computer Science (3).
This course covers new advanced areas in Computer Science not covered in any previous course in the program. It may be repeated with a different topic. (Prerequisite: Junior standing).
CS302. C# Programming (3).
C# is a modern, general-purpose, object-oriented programming language with a range of uses, most notably creating desktop applications, web applications, web services, and building games using the Unity engine. This course is intended to give students a working knowledge of the C# (v8.0) programming language and the .NET framework, as well as an understanding of C#’s application to the Unity Game Development Engine. (Prerequisite: CS242).
CS311. Application Development I (3).
This is the first course in the Application Development series. It explores Web application and introduces Django—a Python-based framework used in the creation of complex data-driven websites. Students will learn the features and particularities of Django, as well as the basics of Web applications including HTML, the Request-Response structure, database management, and the internal structure of servers. In addition to data structures and modules in Python. (Prerequisite: CS104).
CS312. Application Development II (3).
This course is the second course in the Application Development series. Students will build a Web application to post classified ads, plan and build their own unique Web application. The course heavily emphasizes project-based learning. (Prerequisite: CS311).
CS321. Elements of Networking (3).
This course covers TCP/UDP protocols as well as Ethernet and describes the devices and services used to support communication and the role of protocol layers in networks. It introduces subnet masks and addresses and their calculation in IPv4 and IPv6 networks. The students will learn to build small Ethernet networks using networking devices such as switches and routers. (Prerequisite: CS101).
CS323. Computer Organization and Architecture (4).
This course covers the fundamental knowledge areas of computer organization and architecture. Topics include data representation, basic digital logic circuits, memory types and hierarchies, I/O and storage devices, CPU architectures such as RISC, CISC, parallel, and multi-core. Three hours of lectures, two hours of laboratory work per week. (Prerequisites: CS101 or CS103).
CS323L. Computer Organization and Architecture Lab (0).
CS324. Operating Systems and Computer Networks (4).
The course introduces the fundamental concepts of operating systems and computer networks. Operating systems’ topics include, operating systems operations, resource management, inter-process communications, security and protection, and distributed systems. Computer Networks’ topics include, OSI model, TCP/IP model, network topologies, LANs, WANs, client-server systems, protocols, network management, IP addressing, and Internet routing algorithms. Three hours of lectures, two hours of laboratory work per week. (Prerequisite: CS323).
CS324L. Operating Systems and Computer Networks Lab (0).
CS325. Operating Systems (3).
The course covers basic operating systems elements: management of processes and threads, concurrent execution of processes and threads, process synchronization, process communication, and deadlock concepts and synchronization basics. The course also covers memory management and protection as well as file systems. Two hours lectures and two hours of laboratory work per week. (Prerequisites: CS104, CS203).
CS325L. Operating Systems Lab (0).
CS326. Computer Networks (3).
The course covers the following topics: fundamentals of networking systems, network architectures, OSI model, elementary functions of protocols. The course presents protocols such as TCP/IP, UDP, Ethernet, WiFi, VLANs as appropriate. Elementary functions such as error detection, lost and duplicate detection, synchronization, flow control, and retransmission control are presented. Parallel and distributed systems are analyzed in terms of communication needs and performance. Two hours lectures and two hours of laboratory work per week. (Prerequisites: CS104 or CS203).
CS326L. Computer Networks Lab (0).
CS327. Network Security (3).
The course focuses on security issues while exchanging information between two parties. Authentication, authorization, and access control topics are covered. Data security and network security features are also discussed. Other topics such as firewalls, public key infrastructure, security standards and protocols, VPNs, and wireless network security are also discussed. (Prerequisites: CS326 or CS321).
CS328. Network Addressing and Device Configuration (3).
This course covers topics such as the lower part of the OSI layers (physical, data link, network, and transport). Both IPv4 and IPv6 addressing methods will be covered. Students will learn how to connect and configure switches and routers, troubleshoot common network problems, and design networks. Address resolution will also be presented along with the protocols and processes (ICMP, ARP, DNS, DHCP, etc.). Students will also learn how to build a small network using state-of-the-art equipment. (Prerequisite: CS326).
CS329. Network Programming (3).
This course covers network programming using the C programming language. The course briefly presents an overview of the principles of computer networks, OSI reference model, and the TCP/IP stack. The course focuses on understanding UNIX-like OS inter-process communication and developing networking programs using connectionless and connection-oriented sockets. Other topics that are covered include client/server and peer-to-peer network applications. (Prerequisite: CS341).
CS341. Algorithms Analysis and Design (3).
The course explores algorithms analysis in terms of time complexity and memory (space) complexity. The estimation of the complexity of algorithms will be presented. Polynomial vs NP complete algorithms will be discussed. Algorithm design will be covered as design paradigms, brute force, divide and conquer algorithms, dynamic programming algorithms, greedy algorithms, graph searching, and traversal. (Prerequisite: CS242).
CS343. Linear Programming and Graph Theory (3).
The course studies the Simplex algorithm in linear programming and optimization and introduces elements of graph theory. The course covers the study of graphs, trees, and networks, Hamilton paths, cycles, shortest path algorithm, and min-cut max-flow algorithm. (Prerequisite: MATH303).
CS345. Queueing Systems (3).
This course introduces the analysis of complex systems with queueing networks. The two types of queueing networks will be presented: Jackson queue networks and closed networks. The course also covers the following topics: Markov processes, birth-death process, product form queueing networks. (Prerequisite: MATH304).
CS349. Cloud Applications Practicum (3).
Software engineers are frequently tasked with building applications using unfamiliar elements. This course will ask you to build an application using the Google Cloud Platform and one or more unfamiliar technologies or tools you select. By the end of this course, you will learn how to tackle unfamiliar situations, a key skill for any programmer, and improve your skills in programming and software development. This course will provide you with a project to add to your portfolio of work. (Prerequisites: CS241, CS242, and CS312).
CS351. Software Design (3).
This course prepares the students to analyze requirements, design software architectures, and create detailed design specifications for complex software systems. Topics covered include requirements analysis, software architecture design, UML design and design patterns, component-based design, design for quality attributes (performance, reliability, and security), quality attributes scenarios and trade-offs, creating architecture and design specification documents, design reviews and evaluations. The course also introduces the CASE tools for design modeling and documentation. (Prerequisites: CS104 or CS203).
CS352. Software Construction (3).
This course provides students with principles and methodologies to develop high-quality, maintainable, and scalable software systems through hands-on coding exercises, code reviews, and software construction projects. Emphasis will be placed on practical techniques for writing clean, efficient, and error-free code. Topics covered include code organization and modularity; enforcing coding standards; error-handling; debugging; developing test cases for unit testing, integration testing, and system testing; refactoring and reengineering; version control systems and collaboration; setting up development environments and configuring build systems; multi-process and multithread programming and patterns for concurrent programming. (Prerequisites: CS104 or CS203).
CS353. Unity I: Working with Unity (3).
The Unity engine powers nearly 50% of all games and nearly 75% of mobile games. This course, built in collaboration with Unity and the IGDA, will introduce you to developing games in Unity. By the end of this course, you'll learn how to build a fully functioning game within the Unity system, including all key elements. (Prerequisite: CS251).
CS355W. Writing for Computer Science (3) (WRITING INTENSIVE).
Students will practice professional writing in Computer Science and learn the different software engineering processes. Students will develop a software application and apply different forms of writing. This involves learning to combine text and graphics to explain in writing. Students will learn how to conduct proper research to write a well-structured and formatted research paper. In addition, students will practice informal writing, work in group settings, and develop presentation skills. (Prerequisites: CS103 and CCC101).
CS361. Device Security and Defense (3).
This course covers topics related to securing endpoint devices and identifies the types of cybersecurity threats in both wired and wireless networks. Network security infrastructure as well as specific features in modern operating systems will also be presented. Systems and network defense approaches are covered with emphasis on authentication, access control, and firewalls. (Prerequisite: CS326).
CS362. Linux Configuration and Administration (4).
This course exposes students to the basics of system configuration and administration. The course develops skills necessary for day-to-day operations on a Unix-like operating system including system security. Command line-based and GUI-based administration are covered. (Prerequisite: CS262).
CS363. Cloud Security and Threat Management (3).
This course introduces topics such as cloud security, virtualization, protection of virtual machines in the cloud, elements of cryptography, network security data (including transaction data, packet captures, device log file, and network log file). Firewall technologies and their use in current network devices will also be covered. Monitoring of protocols such as HTTP, HTTPS, ICMP, DNS, SMTP, POP3, and IMAP will be visited. Network security testing will be covered identifying tools and techniques. Students will also learn how to assess vulnerabilities of end devices, manage risk, and control security. (Prerequisite: CS361).
CS364. Elements of Penetration Testing (3).
This course exposes the students to the ways hackers use to compromise operating systems and evade antivirus systems. The course also covers the detection of breaches in the network. Elements of data breach analysis and audits of information technology security will also be presented. (Prerequisite: CS321).
CS365. Offensive Security I (3).
This course helps to understand penetration testing and explores some of the methodologies of penetration testing. Students will be exposed to the importance of scoping the activity as well as conformance to the customer requirements. Topics covered include active and passive reconnaissance, gathering and analyzing vulnerability scans, social engineering attacks, impersonation and physical attacks, and network-based vulnerabilities (wired and wireless). (Prerequisite: CS326).
CS366. Offensive Security II (3).
This course exposes students to application-based vulnerabilities and the subsequent attacks (SQL injection, authentication, authorization, security misconfiguration, and file inclusion). Topics such as cloud security, mobile security, and IoT security will be covered and their vulnerabilities explained. Techniques for maintaining persistence after compromising a system will be presented and the students will learn how attackers avoid detection, escalate privileges, and cover their tracks, as well as reporting and communicating the results of the attack. (Prerequisite: CS365).
CS371. Principles and Techniques of Data Analytics I (3).
Data Analytics combines data, computation, and inferential thinking to solve challenging problems and understand their intricacies. This class explores key principles and techniques of data science and teaches students how to create informative data visualizations. It also explores particular concepts of Linear Algebra which are central to Data Science. (Prerequisites: CS104, CS272, MATH135, MATH204).
CS372. Principles and Techniques of Data Analytics II (3).
This course builds on Principles and Techniques of Data Analytics I to provide students with a more robust understanding of the tools of a Data Scientist. This class explores key principles and techniques of data science, including quantitative critical thinking and algorithms for machine learning methods. It will also introduce students to the ways in which data analytics is deployed in healthcare, marketing, political science, criminal justice, and other fields. (Prerequisite: CS371).
CS373. Data Science I (3).
This course is an introduction to data science in Python. Students will use advanced visualization and predictive modeling tools to turn raw data into actionable insights. Students will also learn how to use SQL to navigate databases. (Prerequisites: CS104, CS272).
CS374. Data Science II (3).
This course is intended as a continuation of CS373 Data Science I. This course takes a deep dive into machine learning models, natural language processing, and time series in Python. (Prerequisite: CS373).
CS380. Database Design (3).
This course covers data modeling with the Entity-Relationship model and introduces the relational algebra and its operators. The student will learn about the integrity constraints, how to translate an Entity-Relationship model into a relational model, functional dependencies, normal forms, and normalization algorithms. The SQL language is introduced as a data definition language and a data query language. (Prerequisites: CS103 or CS203).
CS381. Database Management Systems (3).
This course introduces relational database management systems and the mechanisms used to manage databases. The course covers transaction processing, index structures, security, concurrency control, and crash recovery. (Prerequisite: CS380).
CS399. Professional Internship (1-6).
The professional internship will provide an opportunity for students to develop job-related skills and bring them in contact with professionals in the field. The internship should be through the Institute for Career Planning and approved by the Department Chair. Students will make a formal presentation to the department. (Prerequisites: Junior or Senior standing and Department Chair approval required).
CS400. Advanced Topics in Computer Science (3).
This course covers new advanced areas in Computer Science not covered in any previous course in the program. This course may be repeated with a different topic. (Prerequisite: Senior standing).
CS401. Theory of Computation (3).
This course introduces the theory of computation through a set of abstract machines—finite automata, pushdown automata, and Turing machines—and examines the relationship between these automata and formal languages. (Prerequisites: MATH216 and Junior standing).
CS403. Parallel and Distributed Computing (3).
This course will introduce parallel and distributed computing. It covers a broad range of topics related to parallel and distributed computing, including architectures and systems, programming paradigms, algorithms, and other applications of parallel and distributed computing. (Prerequisites: CS341 or Junior standing).
CS405. Object-Oriented Design (3).
The course provides object-oriented techniques and concepts such as classes, interfaces, encapsulation and inheritance, polymorphism, and operator overloading. The students will be presented with some design patterns. The course also covers software design methodologies using UML diagrams. (Prerequisites: CS242 or Junior standing).
CS406. Programming Paradigms (3).
The course provides insights on programming concepts and underlying design principles. The following paradigms will be presented and discussed: procedural sequential, functional, object-oriented, and logic paradigms. (Prerequisite: Senior standing).
CS411. Product Development (3).
In this course, students will learn the roles and frameworks of product development. Students will engage in a range of activities primarily focused on product management—including wireframing, creating user journeys, and writing requirements. (Prerequisite: Junior standing).
CS421. Information Security and Data Protection (3).
Imagine a world where people were trying to steal from every home, workplace, or bank—all the time. That’s the world of digital security. Because it’s cheap to launch attacks on every system you can find, virtually every organization and individual is always under some level of digital attack. This course will teach you how to help defend against this constant assault and keep valuable information and critical systems safe. (Prerequisites: CS104 and CS324).
CS429. Information Technology Capstone (3).
In previous courses you’ve learned how to solve problems as they occur, and how to address the various components that make up an organization’s IT ecosystem. This course will put it all together. You’ll learn how to solve systemic problems across all layers of an organization and guide transformational change. By the end of this course, not only will you know how to solve IT problems as they arise, you’ll be able to prevent those problems from happening in the future. (Prerequisites: CS421, MGMT342, and Senior Standing).
CS451. Independent Study (1-3).
Supervised reading and research in a special interest area of Computer Science. (Prerequisite: permission of department and instructor’s approval of a written proposal that is submitted to the department prior to registration for the course). Fall, Spring, May, and Summer.
CS452. Software Engineering (3).
The course introduces the fundamental and general technique concepts in software engineering. Topics include software process structure, process models, agile development, requirements, design, implementation, validation, testing, maintenance, documentation, and security engineering. Students will work on group projects. (Prerequisite: Senior standing).
CS453. Unity II: Advanced Unity Programming (3).
This course, built in collaboration with Unity, is intended to provide students with the knowledge to bring their mastery of the Unity game engine and C# programming up to a professional standard. Students will learn how to perform a range of vital code-based tasks within the Unity platform and will grow their skills in building core gameplay functionality. Upon successful completion, students will be prepared to sit for the Unity Certified Programmer exam. (Prerequisite: CS353).
CS454. Software Quality Assurance (3).
This course presents how to systematically ensure the quality of software products throughout the software development life cycle. Topics covered include the importance of quality assurance in software development, quality attributes (reliability, usability, and maintainability) and metrics (measurement and quantification), software quality standards, certification, and process improvement. Verification, validation, and software testing levels, techniques, strategies, and automation are also covered. The importance of software inspection and reviews is also presented with examples from the industry. Other topics include the integration of quality assurance in agile methodologies (scrum, Kanban) as well as continuous integration, continuous delivery, and testing. Students are also exposed to software configuration management principles, practices, tools, and techniques as well as version control systems. (Prerequisite: CS351).
CS459. Capstone Project: Building a Game (3).
This course is intended as a culmination of all a student’s work in the Unity Game Development major. Students will work in groups to build a game in the Unity engine that uses real-time 2D or 3D visuals and showcases their understanding of the core principles of game design. Students will pitch their game, design, prototype, build, and test their game. Students will be evaluated based on the quality of their game and their internal project management processes. (Prerequisites: CS341 and CS453).
CS463. Cryptography (3).
This course will introduce students to cryptography and data security. Topics include stream ciphers, data encryption standard (DES) and alternatives, advanced encryption standard (AES), block ciphers, public key cryptography, RSA cryptosystems, digital signatures, and hash functions. (Prerequisites: MATH216, MATH303, CS326, and CS341).
CS465. Digital Forensics (3).
The course covers computer forensics based on the features that are available in current operating systems. It introduces the scope of digital forensics, the file system in Windows operating system, evidence acquisition, network forensics and incident response, forensics for mobile platforms, forensics in images and photographs, coverage of other operating systems such as MacOS and Linux, and emergent technologies (IoT). (Prerequisites: CS325, CS326, CS327).
CS471. AI and Machine Learning (3).
This course is a technical approach to cutting-edge AI methods. Students will productionize machine learning models to solve business problems, evaluate modern AI use cases (such as computer vision), and adapt Large Language Models (LLMs) for specific applications. (Prerequisite: CS374).
CS473. Artificial Intelligence (3).
This course provides students with the fundamental knowledge for understanding Artificial Intelligence. Topics include intelligent agents, knowledge-based and search-based methods for problem solving and inferences, pattern recognition, fuzzy logic, and neural networks. (Prerequisites: MATH303, MATH304, CS341).
CS474. Artificial Neural Networks (3).
The course introduces the concepts of artificial neural networks and their use in solving pattern recognition problems. The course covers the topics of networks architectures, network parameterization, activation functions, artificial neuron models, Boltzmann machine neural network, convolutional neural network, and learning algorithms. The course will also discuss the evolution of the architecture from learning to deep learning. (Prerequisite: MATH303).
CS475. Digital Image Processing (3).
The course introduces spatial operators and frequency operators used to process digital images. Processing techniques include image enhancement and restoration, image representation, sampling, quantization. The course also introduces image analysis and object recognition. (Prerequisite: MATH303).
CS476. Machine Learning (3).
This course provides the foundations of machine learning. The course covers the topics of supervised learning (artificial neural networks, support vector machines), unsupervised learning (clustering, kernel methods), reinforcement learning, and ensemble methods. (Prerequisites: MATH303, MATH304, CS341).
CS477. Clustering and Classification (3).
The course introduces the students to a variety of algorithms and methods of clustering and classification. The focus will be put on the study of the expectation maximization, K nearest neighbors, K means, C means, and fuzzy C means. (Prerequisite: MATH303).
CS478. Computer Vision (3).
The course introduces elements of computer vision such as camera models, multiview geometry, low-level vision (including some image processing algorithms), high-level vision (object detection, object recognition, and 3D cues). (Prerequisites: MATH303 and CS475).
CS479. Data Analytics Practicum (3).
This course is a capstone project in which students are asked to work through a full data science workflow on a set of real data drawn from sports, politics, business, or public health. This course exists to prepare students for the kind of work they will do on Data Science or Analytics teams, and as such, also features an emphasis on interviewing for jobs in the space and communicating results to stakeholders. (Prerequisites: CS242, CS372, and Senior Standing).
CS490. Capstone Project (3).
Independent project on a Computer Science problem topic approved by the department, and under the supervision of a Computer Science department faculty member. The students will carry out research on the topic, develop, design, and implement a programming solution. By the end of this course, students will submit a well-written report, the code, and a presentation. Other topics covered in this course include computing ethics and the impact on society of computing technology. (Prerequisites: Senior standing, completion of core courses in the major, Department approval required).
CS491. Computer Science Practicum (3).
Students will work in groups to launch a web app prototype. The project should use database concepts, data structures, and algorithms, and meet faculty approval. Students will pitch their product, select the necessary technologies, work in groups to build an application, and create a webpage from which the application can be accessed. Students will be evaluated based on whether their product meets the goals they initially established and on their internal project management processes. (Prerequisite: Senior standing).
CS492. Cybersecurity Capstone Project (3).
This course is the cybersecurity capstone project. Students are expected to design, implement, and deliver a complete solution to a practical problem, fulfilling requirements and leveraging cybersecurity and network security skills acquired in the major. (Prerequisite: Senior standing).
CS493. SwEng Capstone Project I (3).
This course is the first part of the culminating project. The project consists of a large-scale software development including requirements analysis, estimation, design, verification, and project management. The students are required to identify the functional requirements, propose an architecture design, a detailed design, and a test plan. The students are encouraged to identify common trade-offs in software design. (Prerequisites: Senior standing, CS351).
CS494. SwEng Capstone Project II (3).
This course is the second part of the culminating project. The project consists of a large-scale software development including requirements analysis, estimation, design, verification, and project management. The students are required to implement the system according to the design, taking into account the software architecture and design choices agreed upon in the design stage. There is an opportunity to derive component software requirements that will eventually be used to design test cases for component testing. Testing, verification, and validation are the last steps of the project before producing supporting documentation. (Prerequisite: CS493).
CS499. Advanced Experimental Course (1-3).
CIS140. Computer Applications for Business (3).
A practical course in business problem solving, decision making and presentation of information utilizing microcomputer technology. Through business problem simulations, students will actively solve problems while learning about microcomputer hardware configuration, operating systems, and common business microcomputer software including spreadsheets, data base management systems, and business graphics. (Prerequisite: MATH101).
CIS199. Exploratory Internship (1-3).
CIS201. Introduction to Data Science (3).
In this course, students learn how to gather, clean, normalize, visualize and analyze data to drive informed decision- making, using spreadsheets, SQL, Python, and other tools to work collaboratively on real-world datasets. (Prerequisite: CS103; Co-requisite: CIS201L).
CIS201L. Introduction to Data Science Lab (1).
In-class projects to accompany CIS201. (Co-requisite: CIS201).
CIS250. Advanced Web-Based Programming (3).
The use of advanced programming techniques, using server-side software to develop dynamic web pages. Discussion of relevant human interface issues. (Prerequisite: CS110).
CIS299. Experimental Course (1-3).
CIS399. Professional Internship (1-12).
CIS451. Independent Study (1-3).
CIS499. Advanced Experimental Course (1-3).