Course Description: Introduction to computer science with an emphasis on problem-solving, programming, and algorithm design. Uses a high-level programming language for solving problems and emphasizing program design and development. Topics include basic programming techniques and approaches to algorithm design, and techniques for understanding the process of computation and the correctness of software. Python was used throughout the course.
Course Description: An introduction to the fundamental data structures of computer science -- strings, lists, stacks, queues, trees, BSTs, graphs, sets and their accompanying algorithms. Principles of algorithmic analysis and object reasoning and design are introduced using mathematical techniques for the notions of both complexity and correctness. More practical issues, such as memory management and hashing, are also covered. The programming language used to illustrate and implement these concepts will be able to support functional, imperative and object-oriented approaches. For these years, we used Java.
Course Description: This course introduces core principles of learning from data. More and more decisions are being made by algorithms that operate on large datasets, and this course will give students the tools to understand and contribute to this process. Throughout we emphasize the ethical use of data and analyze case studies of how data science has intersected with society. This course has a significant theory component, covering introductory linear algebra, probability, statistics, modeling, information theory, and optimization. However, we implement these ideas (in Python) and apply them to concrete datasets from a variety of fields (including images, video, text, DNA, music, art, etc). Course designed by Professor Sara Mathieson.
Course Description: To explore both classical and modern approaches, with an emphasis on theoretical understanding. There will be a significant math component (statistics and probability in particular), as well as a substantial implementation component (as opposed to using high-level libraries). However, during the last part of the course we will use a few modern libraries such as TensorFlow and Keras. By the end of this course, students should be able to form a hypothesis about a dataset of interest, use a variety of methods and approaches to test your hypothesis, and be able to interpret the results to form a meaningful conclusion. We will focus on real-world, publicly available datasets, not generating new data. Course designed by Professor Alvin Grissom II.
Course Description: Computer Vision has become ubiquitous in our society, image searches to self-driving cars. On the other hand, Deep learning has shaken the world of artificial intelligence in the recent years. Most of these developments greatly advanced the performance of state-of-the-art visual recognition systems, which put Computer Vision in the epicenter of most technological progress from the past decade. In this context, this course aims at providing a consistent exploration of how deep learning started to its most recent achievements, always using Computer Vision tasks as their main application, historically or practically. During the course, we'll also understand many of the main computer vision problems and use them as cases for the introduction of various deep learning related problems. Finally, this course hopes to give students working knowledge of PyTorch, one of the main deep learning frameworks, and prepare them to future industrial and academic careers in the field.