This course introduces students to the fundamentals of computer programming as students design, write, and debug computer programs using the programming language Python. No knowledge of programming is assumed. Not open to graduate Computer Science, Information Systems, Mathematics or Scientific Computing students.
Reviews a number of important algorithms, with emphasis on correctness and efficiency. The topics covered include solution of recurrence equations, sorting algorithms, selection, binary search trees and balanced-tree strategies, tree traversal, partitioning, graphs, spanning trees, shortest paths, connectivity, depth-first and breadth-first search, dynamic programming, and divide-and-conquer techniques.
Discusses the design, use, and implementation of imperative, object-oriented, and functional programming languages. The topics covered include scoping, type systems, control structures, functions, modules, object orientation, exception handling, and concurrency. A variety of languages are studied, including C++, Java, Ada, Lisp, and ML, and concepts are reinforced by programming exercises.
This course teaches the design and implementation techniques essential for engineering robust networks. Topics include networking principles, Transmission Control Protocol/Internet Protocol, naming and addressing (Domain Name System), data encoding/decoding techniques, link layer protocols, routing protocols, transport layer services, congestion control, quality of service, network services, programmable routers and overlay networks.
Basic techniques of computer vision and image processing. General algorithms for image understanding problems. Study of binary image processing, edge detection, feature extraction, motion estimation, color processing, stereo vision, and elementary object recognition. Mathematical, signal processing, and image processing tools. Relation of computer vision algorithms to the human visual system.
This course will cover many of the standard PDEs from classical mathematical physics, including the Laplace equation, the Helmholtz equation, Maxwell’s equations, Stokes’ equation, and their alternative integral equation formulation. Numerically solving these associated integral equations requires a special set of tools, in particular, quadrature for singular functions and fast algorithms for the resulting dense matrices. Numerical methods for each of these aspects will be presented (e.g. singular quadrature, fast multipole methods, iterative solvers, and fast direct solvers), and open problems in the field will be discussed.
This course will introduce technologies at the foundation of the Big Data movement that have facilitated scalable management of vast quantities of data collected through realtime and near realtime sensing. We will also explore the tools enabling the acquisition of near realtime data in the social domain, the fusion of those data when in flight and at rest, and their meaningful representation in graphical visualizations. Students are required to complete weekly reading and/or programming assignments and demonstrate mastery of course topics by developing and demonstrating a software project of their choosing. Class time will be set aside for project proposal and final demo.
The course will introduce basic ideas of Multiscale Image Representations (Wavelets - Affine Groups) and Machine Learning (Deep Learning with Variational Auto Encoders, GAN, RNN). Then, the course will be "hands on", with small groups programming/developing projects that integrate the basic ideas above to perform "computer vision tasks" (the evaluation is based on projects). The tasks will be in the topics of Motion, Scene Segmentation, Object Classification, Human Actions.
This course teaches key mathematical concepts using the new Python programming language. The first part of the course teaches students how to use the basic features of Python: operations with numbers and strings, variables, Boolean logic, control structures, loops and functions. The second part of the course focuses on the phenomena of growth and decay: geometric progressions, compound interest, exponentials and logarithms. The third part of the course introduces three key mathematical concepts: trigonometry, counting problems and probability. Students use Python to explore the mathematical concepts in labs and homework assignments. No prior knowledge of programming is required.
A practical introduction to creating modern web applications. Covers full stack web development - including topics such as database / data model design, MVC architecture, templating, handling user input, asynchronous processing, and client side interactivity. Students will use current server and client side web frameworks to build dynamic, data-driven sites. Various tools to support development will also be introduced, such as version control and build systems. Basic knowledge of HTML and CSS and familiarity with command line tools are recommended.
Social Networks is a specific example of many forms of networks that have become ubiquitous in our modern society. Their utilities have been enhanced by their ability to generate massive amount of personal data that need to be analyzed and disseminated quickly. The World Wide Web enables information flows among vast number of humans; Facebook, LinkedIn, etc. connect small groups of friends; amazon, eBay, etc. provide opportunities for trading, etc. These networks determine our information, influence our opinions, and shape our political attitudes. They also link us, often through important but weak ties, to other humans. Their origin is biological: going back to quorum-sensing, swarming, flocking, social grooming, gossip, etc. Yet, as we have connected our social networks to traditional human institutions (markets, justice systems, education, etc.) through new technologies, the underlying biology has become obscured, but not dormant. This course will introduce the tools, analytics and algorithms for the study of networks and their data. It will show how certain common principles permeate the functioning of these diverse networks: e.g., issues related to robustness, fragility, and interlinkages etc.
Natural Language Processing (aka Computational Linguistics) is an inter-disciplinary field applying methodology of computer science and linguistics to the processing of natural languages (English, Chinese, Spanish, Japanese, etc.). Typical applications include: information extraction (automatically finding information from text); information retrieval (web searches and other applications involving the automatic selection of "relevant" documents); sentiment analysis (automatic extraction of opinions about a set of issues); and machine translation (automatically translating one natural language to another). Much of the best work in the field combines two methodologies: (1) automatically acquiring statistical information from one set of "training" documents to use as the basis for probabilistically predicting the distribution of similar information in new documents; and (2) using manually encoded linguistic knowledge. For example, many supervised methods of machine learning require: a corpus of text with manually encoded linguistic knowledge, a set of procedures for acquiring statistical patterns from this data and a transducer for predicting these same distinctions in new text. This class will cover linguistic, statistical and computational aspects of this exciting field.
This course provides an introduction to the field of Computer Graphics. The course will cover the basic mathematical concepts, study the interaction of light with geometry, and implement basic rendering algorithms such as ray tracing and rasterization. At the end of the semester, students will have built their own raytracer, and developed a real-time 3D computer graphics system using the OpenGL 4 graphics API.