105 courses with the subject CS, each shown exactly as we captured it from the college's catalog, with every element we hold. Where the wording looks broken, that is our reading of the catalog, not the college's text.
CS 150Computer Science Principles3.0
An introduction to computer science principles: the big ideas and computational thinking practices central to computer science, and the societal impact of computing and information technology. Exposure to algorithms, big data, machine learning, privacy, security and digital citizenship while introducing and reinforcing the importance of programming.
An introduction to the field of computer science. Exposure to core areas (selected from algorithms, artificial intelligence, computer architecture, databases, graphics, human-computer interaction, programming languages, scientific computation, software engineering) while introducing and reinforcing the importance of programming.
Introduces fundamental concepts of computing including memory, instructions, function calls, and activation records. Covers fundamentals of structured computer programming in the language of instruction: variables, input and output, expressions, assignment statements, conditionals and branching, subprograms, parameter passing, repetition, arrays, top-down design, testing, and debugging.
Advanced programming in language of instruction at an accelerated pace: introduces fundamental concepts of computing including memory, instructions, function calls, and activation records. Covers fundamentals of structured computer programming in the language of instruction: conditionals and branching, subprograms, parameter passing, repetition, arrays, top-down design, testing, and debugging. Supplements basic topics with deeper presentation of advanced techniques for those with some incoming programming experience.
CS 180Introduction to Artificial Intelligence & Machine Learning3.0
This introductory course provides a broad exploration of artificial intelligence (AI) and machine learning (ML), focusing on fundamental concepts, real-world applications, and emerging trends. Students will learn about the history of AI, problem-solving strategies, search algorithms, adversarial agents, classification and clustering techniques, neural networks and deep learning, reinforcement learning, generative AI, large language models, and AI in games. Ethical considerations, societal impacts, and the future of AI will also be discussed. No prior programming experience is required.
Focuses on programming in a selected language of interest. Course content, language, and prerequisites may vary according to instructor, with emphasis on applications for which the language is designed. May be repeated for credit.
Data structures form the basis for the programmer's toolbox. Students will become familiar with the basic data structures and learn to modify or create on their own. Additionally, they will learn several algorithms that use these data structures in solving common problems such as searching and sorting, that involve sequentially, pairwise, or hierarchically related data. Further, students will learn data abstraction, how to separate interface from implementation, and viewing a problem simply in terms of functional requirements and dependencies. Throughout the course, students will develop abstract thinking and problem-solving skills.
CS 265Advanced Programming Tools and Techniques3.0
Introduction to the basic principles of programming practice: testing, debugging, portability, performance, design alternatives, and style. Application in a variety of programming languages, programming environments, and operating systems. Introduction to tools used in the software development process for improving program functionality, performance, and robustness.
CS 270Mathematical Foundations of Computer Science3.0
Introduces formal logic and its connections to Computer Science. Students learn to translate statements about the behavior of computer programs into logical claims and to prove such assertions using both traditional techniques and automated tools. Considers approaches to proving termination, correctness, and safety for programs. Discusses propositional and predicate logic, logical inference, recursion and recursively defined sets, mathematical induction, and structural induction.
Introduces foundational concepts in Computer Science theory, including computability, decidability, the Turing Machine, and algorithmic complexity. Applies concepts underlying graph theory and automata to current topics in computing to create contextualized connections between theory and practice.
Covers internal function and organization of digital computers, including instruction sets, addressing methods, input-output architectures, central processor organization, machine language, and assembly language.
This course introduces computer systems, including interaction of hardware and software through the operating system, from the programmer's perspective. Three fundamental abstractions are emphasized: processes, virtual memory, and files. These abstractions provide programmers a common interface to a wide variety of hardware devices. Topics covered include linking, system level I/O, concurrent programming, and network programming.
This course covers the fundamentals of symbolic mathematical methods as embodied in symbolic mathematics software systems, including: fundamental techniques, simplification of expressions, solution of applications problems, intermediate expressions swell, basic economics of symbolic manipulation, efficient solution methods for large problems, hybrid symbolic/numeric techniques.
CS 303Algorithmic Number Theory and Cryptography3.0
Covers fundamental algorithms for integer arithmetic, greatest common divisor calculation, modular arithmetic, and other number theoretic computations. Algorithms are derived, implemented and analyzed for primality testing and integer factorization. Applications to cryptography are explored including symmetric and public-key cryptosystems. A cryptosystem will be implemented and methods of attack investigated.
Explores the technologies and techniques associated with microcontrollers and Systems on Chips (SOCs) as well as their use in embedded systems. A major focus is on developing software to control input and output devices.
This course introduces students to the computer game design process. Students also learn how the individual skills of modeling, animation, scripting, interface design and story telling are coordinated to produce interactive media experiences for various markets, devices and purposes.
This course covers performance evaluation and benchmarking, pipelining, superscalar processors, multiprocessors, and interfacing processors and peripherals. The memory hierarchy, including cache and virtual memory, are also explored from a programmer's perspective with high-performance computing techniques in mind.
Introduces the design and implementation of modern programming languages: formal theory underlying language implementation; concerns in naming, binding, storage allocation and typing; semantics of expressions and operators, control flow, and subprograms; procedural and data abstraction; functional, logic, and object-oriented languages. Students will construct an interpreter for a nontrivial language.
Explores the internal algorithms and structures of operating systems: CPU scheduling, memory management, file systems, and device management. Considers the operating system as a collection of cooperating sequential processes (servers) providing an extended or virtual machine that is easier to program than the underlying hardware. Topics include virtual memory, input/output devices, disk request scheduling, deadlocks, file allocation, and security and protection.
Introduction to web development with a focus on programming full-stack web applications. Covers front-end topics like HTML, CSS, and client-side JavaScript, and back-end topics like web servers and databases.
An introduction to foundational systems concepts underpinning the broad area of software security. Topics covered include access control, software vulnerabilities such as buffer overflows and race conditions, insecurity in software, cryptocurrency, malware, and operating systems security.
Explores the foundations of artificial intelligence, including overviews of problem solving, basic and adversarial search, logical agents, natural language processing, machine learning, reinforcement learning, neural networks, deep learning, generative AI, and related special topics, along with their applications to real-world problems.
This course covers the fundamentals of modern statistical machine learning. Lectures will cover the theoretical foundation and algorithmic details of representative topics including probabilities and decision theory, regression, classification, graphical models, mixture models, clustering, expectation maximization, hidden Markov models, and weak learning.
This course covers computational intelligence approaches to problem solving for classification, adaptation, optimization, and automated control. Methods covered will include evolutionary programming/genetic algorithms, genetic programming, neural networks, swarm optimization, and fuzzy logic.
This course focuses on artificial intelligence (AI) techniques for computer games. Students will learn both basic and advanced AI techniques that are used in a variety of game genres including first-person shooters, driving games, strategy games, platformers, etc. The course will emphasize the difference between traditional AI and game AI, the latter having a strong design component, focusing on creating games that are “fun to play.” Topics include path-finding, decision-making, strategy and machine learning in games.
Reinforcement Learning (RL) has emerged as a powerful paradigm for creating intelligent, autonomous agents capable of learning from their interactions with the environment. This course provides a comprehensive understanding of key theoretical concepts, and students will learn about the core challenges and approaches, including generalization and exploration. Through a combination of theoretical lectures and hands-on coding projects, students will learn key concepts in RL, including MDPs, dynamic programming, deep RL, and the latest advances in model-based and model-free RL algorithms.
This laboratory course takes a Software-Defined Radio (SDR) implementation approach to learn about modern analog and digital communication systems. Software defined radio uses general purpose radio hardware that can be programmed in software to implement different communication standards. We will begin by discussing the basic principles of wireless radio frequency transmissions and leverage this knowledge to build analog and digital communication systems. Knowledge of these techniques and systems will provide a platform that can be used in the class project for further exploration of wireless networking topics such as cybersecurity, cognitive radio, smart cities, and the Internet of Things.
The course presents the fundamental geometric representations and drawing algorithms of computer graphics through lectures and programming assignments. The representations include lines, curves, splines, polygons, meshes, parametric surfaces and solids. The algorithms include line drawing, curve and surface evaluation, polygon filling, clipping, 3D-to-2D projection and hidden surface removal.
This is a project-oriented class that covers the concepts and programming details of interactive computer graphics. These include graphics primitives, display lists, picking, shading, rendering buffers and transformations. Students will learn an industry-standard graphics system by implementing weekly programming assignments. The course culminates with a student-defined project.
Fundamentals of computational photography, an interdisciplinary field at the intersection of computer vision, graphics, and photography. Covered topics include fundamentals of cameras, novel camera designs, image manipulation, single-view modeling, and image-based rendering with an emphasis on learning the computational methods and their underlying mathematical concepts through hands-on assignments.
The goal of this course is to learn the general principles and techniques required to build a game engine from scratch. The course covers basic programming techniques for games, but without focusing on any specific programming language nor platform. Topics include game engine architecture, game loops, real-time 2D and 3D rendering, collision detection, input handling, networking, animation, scripting, Game AI, and 2D and 3D physics simulation. Additionally, students will also gain knowledge of existing game engines.
Finite automata, regular sets, and regular expressions; pushdown automata, context-free languages, and normal forms for grammars; Turing machines and recursively enumerable sets; Chomsky hierarchy; computability theory.
Covers the fundamentals of optimizing compilers and code generation, including compiler intermediate representations, basic compiler optimizations, program analyses to enable optimizations (such as value numbering), and generation of efficient code (register allocation and instruction selection).
This course provides a broad introduction to computational network neuroscience, also known as connectomics, which is an interdisciplinary field between medicine, neuroscience, machine learning, and graph theory to students coming from a computing background. Processing of neuroimaging data to obtain brain networks, its analysis using basic statistical methods as well as advanced machine learning techniques, with applications on healthy and various patient populations will be covered. After taking the course, the student will become prepared for a postgraduate level research experience in the burgeoning field of connectomics.
This course covers techniques for analyzing algorithms, including: asymptotic analysis, recurrence relations, and probabilistic analysis; data structures such as hash tables and binary trees; algorithm design techniques such as dynamic programming, greedy methods, and divide & conquer, as well as graph algorithms for graph traversal, minimum spanning trees, and shortest paths.
This course covers the amortized analysis of algorithms and data structures; Fibonacci heaps; graph algorithms for maximizing network flow and computing minimum all pairs shortest paths; string matching algorithms; NP-Completeness and approximation algorithms.
This class covers a wide variety of special topics in theoretical computer science and mathematics, including advanced techniques for the design and analysis of algorithms, algorithmic game theory, approximation algorithms, randomized algorithms, computational complexity, and discrete mathematics.
Subject
CS
Credits (min)
0
Credits (max)
3
Credit unit
Credits
Type
course
Repeatable
Can be repeated multiple times for credit Prerequisites: CS 260 [Min Grade: C] and CS 270 [Min Grade: C] and CS 277 [Min Grade: C] and MATH 221 [Min Grade: C]
Covers topics including structure and function of database systems, normal form theory, data models (relational, network, and hierarchical), query processing (ISBL), relational algebra and calculus, and file structures. Includes programming project using DBMS.
Introduction to various aspects of software design, development and architecture used to create modern cloud computing software products, that run cost-effectively at scale. Focus will be placed on covering software engineering concepts, techniques and technologies used to build and deploy applications that run at scale on cloud infrastructure. Key topics include cloud native platform engineering concepts such as developing and deploying infrastructure to support a modern API-based application in the cloud.
This course will motivate the need for privacy protection and introduce basic privacy properties such as anonymity, unlinkability or unobservability. We will then discuss how these properties can be formalized, modeled and measured. The course will provide a broad overview of the state-of-the-art in privacy technologies, explain the main issues that these technologies address, what the current solutions are able to achieve, and the remaining open problems.
CS 472Computer Networks: Theory, Applications and Programming3.0
Introduction to computer networking theory, applications and programming, focusing on large heterogeneous networks. Broad topdown introductions to computer networking concepts including distributed applications, socket programming, operation system and router support, router algorithms, and sending bits over congested, noisy and unreliable communication links.
An introduction to foundational systems concepts underpinning the specialized area of network security. Focus to be given to security issues pertaining to the Data Link, Network, and Transport layers of the network stack. Topics include packet sniffing and spoofing, as well as MAC, IP, ICMP, TCP, and UDP attacks.
This course is an introduction to high performance computing, including concepts and applications. Course contents will include discussions of different types of high performance computer architectures (multi-core/multi-threaded processors, parallel computers, etc), the design, implementation, optimization and analysis of efficient algorithms for uni-processors, multi-threaded processors, parallel computers, and high performance programming.
Deeper dive into web development with a focus on programming full-stack web applications. Topics may include front-end frameworks, API architecture, authentication, deployment, security, and testing.
A treatment of advanced systems concepts underpinning the specialized area of network security. Focus to be given to security issues pertaining to the Application layer of the network stack. Topics include security attacks on Firewalls and DNS, as well as attacks on Web Applications such as Cross-Site Request Forgery, Cross-Site Scripting, and SQL Injection.
This course covers topics in representation, reasoning, and decision-making under uncertainty; learning; solving problems with time-varying properties. Assignments applying AI techniques toward building intelligent machines that interact with dynamic, uncertain worlds will be given.
This course introduces students to the understanding about the robustness and vulnerability of current state-of-the-art machine learning systems. Lectures will cover the theoretical foundation and algorithmic details of different types of adversarial attack and defense methods accordingly on multiple machine learning tasks including image classification, object detection, natural language processing, etc. Students will understand the intriguing property of deep learning systems and know the significance of robust and trustworthy machine learning.
A variety of special topics are offered in artificial intelligence (AI) including: intelligent time-critical reasoning, knowledge-based agents, machine learning, natural language processing, and geometric reasoning. This course may be repeated for credit as topics vary.
This course gives an introduction to data management at scale. Covered topics include ER and relational modeling, SQL, database application development, query processing, and data management on distributed platforms.
Develops an understanding of the principles, knowledge, and skills in the practice of programming. For both students with no programming experience and those with a small amount of programming experience, this course will bring them up to speed and prepare them for graduate study in Computer Science.
An introduction to classical algorithms with a focus on implementation and applications. Covers both analysis and implementation of algorithms. Algorithms include searching, sorting, and shortest path. Data Structures and their analysis is also covered. Data Structures include trees and graphs.
This course will introduce fundamental concepts of computer architecture and operating systems, covering the Unix environment from the perspective of an application developer and a systems programmer. Topics include scripting, languages and tools that are part of the Unix environment, as well as introduction to system programming topics, including OS processes and threads, memory management, concurrency, inter-process communication and networking.
This course features hands-on and project-based approaches to object-oriented design, covering abstraction, modularization, inheritance, polymorphism, encapsulation, design principles, design patterns, as well as design modeling languages. Basic concepts of software architecture and database will also be introduced.
Techniques for analyzing algorithms: asymptotic notation, recurrences, and correctness of algorithms; divide and conquer: quick sort, merge sort, median and order statistics; elementary data structures: hashing, binary heaps, binary search trees, balanced search trees; graph algorithms: Depth and Breadth first searches, connected components, minimum spanning trees, shortest paths in graphs.
Discussion of algorithm design techniques, augmented data structures including Binomial and Fibonacci heaps and Splay tree; Amortized analysis of data structures, topics in pattern and string matching, network flow problem, matching in bipartite graphs, and topics in complexity theory including reduction and NP-completeness, and approximation algorithms.
Covers the underlying algorithms behind symmetric key and public key cryptography. Students will learn the underlying mathematics behind the algorithms and the necessary issues involved when implementing these algorithms. A variety of cryptosystems and methods of attack will be implemented and analyzed. Assumes knowledge of linear algebra and discrete math.
Theory of computation introduces basic mathematical models of computation and the finite representation of infinite objects. These topics covered in the course include: finite automata and regular languages, context free languages, Turing machines, partial recursive functions, Church's Thesis, undecidability, reducibility and completeness, and time complexity.
This course examines the implementation of multimodal user interfaces within the context of interface design and evaluation. The course involves both practice implementing interfaces using current technologies and study of topical issues such as rapid prototyping, advanced input, and assistive technology.
An introduction to the basic concepts of computer graphics, with a special emphasis on the mathematical representations of 3D objects (lines, curves, surfaces and solids), as well as the algorithms used to evaluate these objects. Topics such as drawing, clipping, color, viewing, rendering and animation will also be covered.
This is a project-oriented class that covers the concepts and programming details of interactive computer graphics. These include graphics primitives, display lists, picking, shading, rendering buffers and transformations. Students will learn an industry-standard graphics system by implementing weekly programming assignments. The course culminates with a student-defined project.
Covers the design, evaluation and use of high-performance processors, including instruction set architecture, pipelining, superscalar execution, instruction level parallelism, vector instructions, memory hierarchy, parallel computing including multi-core and GPU, and high-performance I/O. Special attention is given to the effective utilization of these features, including automated techniques, in the design and optimization of performance-driven software.
Covers the classical internal algorithms and structures of operating systems, including CPU scheduling, memory management, and device management. Considers the unifying concept of the operating system as a collection of cooperating sequential processes. Covers topics including file systems, virtual memory, disk request scheduling, concurrent processes, deadlocks, security, and integrity.
To examine computer networks using networking models (TCP/IP, OSI and ATM) and break down computer networking, examine each layer and its duties and responsibilities. To analyze networking protocols and understand the design. To use the Internet and other example protocols to illustrate the theory and operation of each layer.
Introduction to various aspects of software design, development and architecture used to create modern cloud computing software products. Focus will be placed on covering software engineering concepts, techniques and technologies used to build and deploy applications that run at scale on cloud infrastructure. Key topics include cloud native software engineering concepts such as working with API-driven infrastructure, software design/architecture considerations for cloud native applications, and various modern technology stacks used in creating cloud software products.
Covers basic concepts of the design and implementation of programming languages, including data representation and types, functions, sequence control, environments, block structure, subroutines and coroutines, storage management. Emphasizes language features and implementation, not mastery of any particular languages.
Provides a thorough study of modern compiler techniques. Topics include scanners, parsers with emphasis on LR parsing, and syntax-directed translation. Requires students to use a parser generator to write a compiler for a non-trivial language. Examines several advanced topics in depth, such as automatic code generation, error recovery, and optimization techniques.
This course provides a broad introduction to computational network neuroscience, also known as connectomics, which is an interdisciplinary field between medicine, neuroscience, machine learning, and graph theory to students coming from a computing background. Processing of neuroimaging data to obtain brain networks, its analysis using basic statistical methods as well as advanced machine learning techniques, with applications on healthy and various patient populations will be covered. After taking the course, the student will become prepared for a postgraduate level research experience in the burgeoning field of connectomics.
Introduces the general principles and techniques required to build a game engine from scratch. We will cover basic programming techniques for games, but without focusing on any specific programming language nor platform. Topics will include game engine architecture, game loops, real-time 2D and 3D rendering, collision detection, input handling, networking, animation, scripting, Game AI, and 2D and 3D physics simulation. Additionally, students will also gain knowledge of existing game engines, such as OGRE.
For users of symbolic computation (maple, mathematica, derive, macsyma) who wish to gain an understanding of fundamental symbolic mathematical methods. Includes introduction to a symbolic mathematical computation system and application to problems from mathematics, science and engineering. Also includes programming and problems specific to symbolic computation.
Develops an understanding of the principles behind and skill in the practice of programming. For both students with no programming experience and those with a small amount of programming experience, this course will bring them up to speed and prepare them for graduate study in Computer Science.
Theoretical and algorithmic foundation and applications of computer vision. Covered topics include image formation, image sensing, image filtering, lightness, radiometry, motion, image registration, stereo, photometric stereo, shape-from-shading, and recognition with an emphasis on the underlying mathematics and computational models and complexity as well as computational implementation of representative applications through multiple programming assignments.
With the rapid deployment of machine learning models in domains such as lending, sentencing, and hiring, it is essential to understand the ethical aspects and negative consequences of such models. In this course, we focus on three of these aspects: fairness, explainability, and recourse.
This course will motivate the need for privacy protection and introduce basic privacy properties such as anonymity, unlinkability or unobservability. Students will discuss how these properties can be formalized, modeled and measured. The course will provide a broad overview of the state-of-the-art in privacy technologies, explain the main issues that these technologies address, what the current solutions are able to achieve, and the remaining open problems.
CS 591Artificial Intelligence and Machine Learning Capstone I3.0
This course explores artificial intelligence (AI) and machine learning (ML) in practice as an open-ended team activity. Initiates an in-depth multi-term capstone study applying computing and informatics knowledge in an AI/ML project. Teams work to develop a significant product with advisors from industry and/or academia. Explores AI/ML-related issues and challenges involved in the application domain of the team’s choice. Applies a development process structure for project planning, specification, design, implementation, evaluation, and documentation.
CS 592Artificial Intelligence and Machine Learning Capstone II3.0
This course explores artificial intelligence (AI) and machine learning (ML) in practice as an open-ended team activity. Completes an in-depth multi-term capstone study applying computing and informatics knowledge in an AI/ML project. Teams work to develop a significant product with advisors from industry and/or academia. Explores AI/ML-related issues and challenges involved in the application domain of the team’s choice. Applies a development process structure for project planning, specification, design, implementation, evaluation, and documentation.
Representation, reasoning, and decision-making under uncertainty; dealing with large, real world data sets, learning; and solving problems with time-varying properties; how to apply AI techniques toward building intelligent machines that interact with dynamic, uncertain worlds.
This course focuses on artificial intelligence (AI) techniques for computer games. Students will learn both basic and advanced AI techniques that are used in a variety of game genres including first-person shooters, driving games, strategy games, platformers, etc. The course will emphasize the difference between traditional AI and game AI, the latter having a strong design component, focusing on creating games that are “fun to play.” Specifically, the topics we will cover in class are basic AI techniques, algorithms, and data structures used for character movement, pathfinding, decision-making, strategy and machine learning in games.
This course studies modern statistical machine learning with emphasis on Bayesian modeling and inference. Covered topics include fundamentals of probabilities and decision theory, regression, classification, graphical models, mixture models, clustering, expectation maximization, hidden Markov models, Kalman filtering, and linear dynamical systems.
Machine learning (ML) learns concepts from data to perform complex tasks to solve a variety of challenging problems. With the growth and abundance of data sources and types, ML methods become more sophisticated and give rise to applications in new areas accomplishing tasks perceived as impractical or not feasible before. This course educates students to recognize the relevant factors in applying ML methods and architectures to different application problems in various application domains. The focus on specific application domains, tasks, and areas may vary depending on students’ interest but will cover the essential problem areas of artificial intelligence such as vision, natural language, recommender systems, and applications in the biomedical field.
Introduces a machine learning technique called deep learning and its applications, as well as core machine learning concepts such as data set, evaluation, overfitting, regularization and more. Covers neural network building blocks: linear and logistic regression, followed by shallow artificial neural networks and a variety of deep networks algorithms and their derivations. Includes implementation of algorithms and usage of existing machine learning libraries. Explores the usage of deep learning on a variety of problems including image classification, speech recognition, and natural language processing. Concludes with student-chosen project demonstrations accompanied by a conference-style paper.
This course features hands-on and project-based approaches to the understanding of the robustness and vulnerability of current state-of-the-art deep learning systems, particularly in the context of realworld security applications. Lectures will cover the theoretical foundation and algorithmic details of white/black-box adversarial attacks, data poisoning attacks, and appropriate defenses for multiple machine learning tasks, including image classification, object detection, natural language processing, graph neural networks, etc. More generally, the idea of adversarial machine learning is crucial for expanding learning capabilities, ensuring trustworthy decision-making, and enhancing the generalizability of deep learning methods.
Reinforcement Learning (RL) has emerged as a powerful paradigm for creating intelligent, autonomous agents capable of learning from their interactions with the environment. This course provides a comprehensive understanding of key theoretical concepts, and students will learn about the core challenges and approaches, including generalization and exploration. Through a combination of theoretical lectures and hands-on coding projects, students will learn key concepts in RL, including MDPs, dynamic programming, deep RL, and the latest advances in model-based and model-free RL algorithms.
This course explores, from an algorithmic perspective, problems that arise at the interface of economics and computer science. After a short introduction to game theory, the focus will be on understanding how the incentives of strategic agents may affect these agents’ decisions, and on designing mechanisms aiming to improve the outcomes of the interactions among the agents. The topics covered include the design of auctions, matching markets, online advertising markets, fair division, selfish routing, social choice, and preference aggregation.
Study of techniques for designing approximation solution to NP-hard problems. Classification of problems into different categories based on the difficulty of finding approximately sub-optimal solutions for them. The techniques will include greedy algorithms, sequential algorithms, local search, linear and integer programming, primal-dual method, randomized algorithms, and heuristic methods.
Introduction to algorithms and Data Structures for computational problems in discrete geometry (for points, lines and polygons) primarily in finite dimensions. Topics include triangulation and planar subdivisions, geometric search and intersections, convex hulls, Voronoi diagram, Delaunay triangulation, line arrangements, visibility, and motion planning.
This laboratory course takes a Software-Defined Radio (SDR) implementation approach to learn about modern analog and digital communication systems. Software defined radio uses general purpose radio hardware that can be programmed in software to implement different communication standards. We will begin by discussing the basic principles of wireless radio frequency transmissions and leverage this knowledge to build analog and digital communication systems. Knowledge of these techniques and systems will provide a platform that can be used in the class project for further exploration of wireless networking topics such as cybersecurity, cognitive radio, smart cities, and the Internet of Things.
This course explores the principles of cognition and intelligence in human beings and machines, focusing in how to build computational models that, in essence, think and act like people. The course reviews existing frameworks for such models, studies model development within one particular framework, and discusses how models can be employed in real-world domains.
A research-intensive course on advanced topics that reflect the state-of-the-art of current research activities in computer vision. The course alternates between lectures on the fundamentals of, and paper presentations by the students on, selected topics.
The purpose of this course is to cover the principles and practice of cryptography and network security. The first half of the course covers cryptography and network security techniques. The second part deals with the practice of network security, i.e. with the processes and application that have to be in place to provide security.
In-depth discussion of fundamental concepts of distributed computer systems. Covers development techniques and runtime challenges, with a focus on reliability and system validation techniques. Subjects discussed include: interprocess communication, remote procedure calls and method invocation, middleware, distributed services, coordination, transactions, replication and weak data consistency models. Significant system-building term project in Java or similar language.
This course introduces the student to the foundations and state-of-the-art techniques in high performance software development for numeric libraries and other important kernels. Topics include: 1) fundamental tools in algorithm theory, 2) optimizing compilers, 3) effective utilization of the memory hierarchy and other architectural features, 4) how to use special instruction sets, and 5) an introduction to the concepts of self-adaptable software and program generators.
Focuses on systems and algorithms for scalable processing of large complex datasets. Consists of four thematic units: data preparation, including data cleaning and integration; distributed computation on MapReduce and Apache Spark; analysis of graph, network and spatiotemporal data; and analysis of streaming data.
Introduction to Foundations of Symbolic Computation. Typical topics : Arithmetic with large integers, rational numbers, polynomials, modular arithmetic, greatest common divisors, chinese remainder algorithm.
Covers a variety of paradigms and languages for programming parallel computers. Several tools for debugging and measuring the performance of parallel programs will be introduced. Issues related to writing correct and efficient parallel programs will be emphasized. Students will have ample opportunity to write and experiment with parallel programs using a variety of parallel programming environments.
The research rotation course allows students to gain exposure to cybersecurity-related research that cuts across conventional departmental barriers and traditional research groups, prior to identifying and focusing on a specific interdisciplinary project or thesis topic. Students selecting to participate in research rotations would participate in the research activities of two labs for each three credits of research rotation they undertake.
Introduces formal models of computation, including inherent difficulty of various problems, lower bound theory, polynomial reducibility among problems, Cook's theorem, NP-completeness, and approximation strategies.
This class covers a wide variety of special topics in theoretical computer science and mathematics, including advanced techniques for the design and analysis of algorithms, algorithmic game theory, approximation algorithms, randomized algorithms, computational complexity, and discrete mathematics.
Subject
CS
Credits (min)
0
Credits (max)
3
Credit unit
Credits
Type
course
Repeatable
Can be repeated multiple times for credit Prerequisites: CS 521 [Min Grade: C]