Layer approach to understanding networks using the ISO model: physical layer, data link layer, network layer, and, as time permits, the transport, session, presentation, and application layers.
3 hr./wk.
Formal description of programming languages and techniques used in their compilation. Study of syntax, semantics, ambiguities, procedures replication, iteration, and recursion in these languages. Syntactic decomposition and the theory of compilers that are syntax-directed or recursively controlled.
3 hr./wk.
Shepherdson-Sturgis machines. Elements of recursive function theory. The equivalence of the class of computable and recursive functions. Church's thesis; other models of computation: Post machines, Turing machines, semi-Thue systems, etc. Unsolvable problems and introduction to their classification. Subrecursive formalism.
3 hr./wk.
Model of distributed computing. Various network traversal algorithms and their corresponding spanning trees. Building a logical ring. Distributed shortest path algorithms. Knot and cycle detection. Mobile objects navigating a network.
3 hr./wk.
Classes of languages; their description in terms of grammars and their recognition by automata. The Chomsky hierarchy; regular, context-free, context-sensitive and recursively enumerable languages. Application to parsing and compiler construction.
3 hr./wk.
Basic model of distributed computing. Asynchronous and synchronous message passing. Algorithms for distributed termination detection and their correctness proofs. The correctness requirements of safety, liveness, and fairness in distributed computations. Synchronization algorithms. Communicating Sequential Processes. Higher level language constructs for synchronization algorithms. Verification methods. Several seemingly correct but actually incorrect algorithms will be shown for the above problems to appreciate the subtle correctness problems in distributed algorithms.
3 hr./wk.
Mutual exclusion-software and hardware approaches. The correctness requirements of safety, liveness, and fairness. Semaphores, monitors and other concurrent programming constructs. Classical synchronization problems. Axiomatic verification of concurrent algorithms. Models of distributed computation. Distributed termination detection. Time clocks, and ordering of events. Distributed Mutual Exclusion. Deadlocks in distributed systems.
3 hr./wk.
Operating systems and architectural concepts of real-time systems. Review of I/O programming and basic machine language programming. Interrupt processes. Coding of specific device drivers using absolute addressing status registers, command signals, buffering. Timing considerations and applications. Concurrent processes, wait-send phenomena, and the use of semaphores.
3 hr./wk.
Introduction to numerical algorithms for scientific computation. Basic concepts of numerical error. Interpolation, quadrature, solution of linear systems of equations, non-linear equations, ordinary differential equations. Some discussion of partial differential equations and numerical methods of solving them. Computer implementation aspects.
3 hr./wk.
Simulation of dynamic stochastic systems using models involving numerical and logical processes. Modeling concepts, description in terms of entities, attributes, and activities, time flow mechanisms, queues, event-oriented vs. particle-oriented models. Generation of stochastic variates, collection and evaluation of statistics. Simulation languages. Computer projects using a general purpose language (e.g. Fortran or Matlab) and at least one simulation language (e.g. GPSS) will be assigned.
3 hr./wk.
The course aims to provide a broad understanding of big data and state-of-the-art technologies to manage and process them.General topics of this course include: big data ecosystems,parallel and streaming programming model, spatial data management, Map Reduce, Hadoop,Spark, Hive, and Pig Hands-on labs and exercises in the context of data science will be offered throughout the class to bolster the knowledge learned in each module.
3 hr./wk.
Maximization and minimization of functions of several variables, with and without constraints. Convex sets and functions, linear and dynamic programming, network flows.
3 hr./wk.
This course will provide a theoretical and hands‐on introduction to the basics of machine learning and its application to various real‐world problems. The course focuses on supervised learning problems including classification and regression. The course also discusses reinforcement learning. Unsupervised learning techniques such for dimension reduction and clustering will also be discussed. A wide range of different machine algorithms will be surveyed such as k-nearest-neighbors, polynomial curve fitting, logistic regression, support vector machines, decision trees, ensemble methods, and artificial neural networks. The course will also discuss ethical considerations in the application of machine learning. The course will be a feature a final project demonstrating mastery of the material..
3 hr./wk.
State-space and problem-induction representations of problems. Heuristic methods. Mechanical theorem proving. Application of these techniques to artificial intelligence problems.
3 hr./wk.
An introduction to combinatorial analysis and graph theory. Sample topics: principle of inclusion and exclusion, recurrence relations, zero-one matrices, partitions, Polya's Theorem, directed graphs,
3 hr./wk.
Current developments in computer architecture chosen from: superscalar parallel/pipelined architectures: speculative execution; branch prediction; register renaming techniques. Students develop software for superscalar processors, both real and simulated.
3 hr./wk.
In this course students are introduced to modern software engineering tools, processes, and practices leveraged to develop software products in today’s top technology companies. Students will learn about the origins, theoretical underpinnings, and practical applications of these tools, processes, and practices in industry from empirical research. Additionally, students will apply these tools, processes, and practices by working in teams with their classmates to implement a student selected software application during the semester.
3 hr./wk.
This course consists of a survey of analytical tools and concepts in data science, with goal of equipping students with an understanding of the best practices used by professional data scientists and analysts in top companies in technology, finance, and media. The course begins with an overview of fundamentals in data handling and exploratory data analysis, followed by an introduction to core concepts in statistical modeling and machine learning, and concludes with a brief introduction advanced concepts in data science. Students will work with a wide variety of real-world data sets throughout the course in order to gain hands on experience. Emphasis will be placed on frequent practice through writing and reviewing code each week. In addition, students will be assigned and expected to discuss short reading assignments ranging from academic reviews of popular topics in analytics as well as data science and engineering blog posts from companies such as Airbnb, Spotify, and Facebook. Tasks and readings will aim to demystify the work of data teams in the real world, and familiarize students with the concepts and resources needed to secure and succeed in analytical roles.
3 hr./wk.
An intensive introduction to digital image processing. Image enhancement, digital filtering theory. Fourier transforms, image reconstruction, resampling, antialiasing, geometric transformations, scanline algorithms, warping, and morphing. Emphasis is on computational techniques. Substantial programming assignments.
3 hr./wk.
An intensive introduction to algorithms that recover information from images, motion sequences, multiple views, and 3D volumes. Topics include edge and region recovery, perspective, texture, object recognition, and 3D shape from shading/stereo/motion. Substantial programming assignments.
3 hr./wk.
An intensive study of computer graphics. Graphics hardware, OpenGL API, raster scan conversion, clipping, geometric transformations, 3D viewing, visible surface determination, illumination, shading, splines, ray tracing and animation. Substantial programming assignments.
3 hr./wk.
The design and implementation of web sites and web applications. Current web technologies will be reviewed as well as principles of user experience design. Students will learn to write a web application in a web framework. There will be an emphasis on testing, working in a small team and software engineering best practices.The design and implementation of web sites from a Human-Computer Interaction viewpoint, with emphasis on user testing. Navigation design. Accessibility by persons with limitations in vision or motor ability is stressed and must be addressed in the final project.
3 lab hr./wk.
Visualization organizes data in a way that the structure and relationships in the data that may not be so easily understood becomes easily understood and interpreted with the visualization. Visualizations of a data set give the reader a narrative that tells the story of the data. The purpose of data visualization is to convey information contained in data to clearly and efficiently communicate an accurate picture of what the data says through understandable and context appropriate visualizations.
3 hr./wk.
Topics of current interest in image processing, computer vision, computer graphics, and multimedia.
3 hr./wk.
An introduction to the principles and practice of digital libraries. Algorithms are drawn from computer vision, pattern recognition, image processing, and document processing. Topics include low-level image processing, texture, color constancy, shape from X, supervised and unsupervised training, and implementation issues regarding content based multimedia database. Programming assignments will be implemented in C++ or Java.
3 hr./wk.
An introduction to the principles and practices of computer security in various computing environments. Conventional encryption systems and classical cryptography. Confidentiality using conventional encryption. Public key cryptography and protocols for authentication and digital signatures. Recent cryptanalytic attacks on conventional and public key systems. Intruders, worms, viruses and trusted systems. Firewalls and internetwork security. A survey of applications and problems arising in contemporary computer security.
3 hr./wk.
An introduction to the performance and limitations of computer algorithms through a study of selected algorithms. Topics include primality testing and integer factorization, algorithms for integer programming and knapsack problems, reductions and NP-completeness, randomized algorithms, and experimental algorithms arising from new technologies such as molecular, neural, and quantum computing.
3 hr./wk.
This course focuses on teaching students the fundamentals of web application security with the aim of providing a foundational level of knowledge matched with offensive and defensive skills developed through hands-on experience. Students will learn the basics of webapp security and common vulnerabilities and attacks, receiving hands-on practice in both exploitation techniques and strategies for protecting and hardening applications. Developed in partnership with Facebook, the course introduces a wide range of topics via a combination of sessions, videos, projects, and labs, giving students both a thorough grounding in the details of webapp.
3 lect. Hrs/wk.