Courses at UVA

CS 4774: Machine Learning

Fall 2022, Fall 2021, Spring 2021, Fall 2020, Spring 2020, Fall 2019, Spring 2019

Average Enrollment: ~100 students. This course introduces fundamental concepts and methods to learn from data for computational data analysis, including pattern recognition, prediction, and visualization. The primary focus is on giving an introduction to machine learning techniques applying to various problems. The students in this course will be able to: (1) Handle data from multiple fields and create end-to-end machine learning projects using open source libraries such as Scikit-Learn, Keras, and TensorFlow. (2) Formulate various supervised and unsupervised learning techniques including linear regression, logistic regression, support vector machine, decision trees, random forests, boosting, k-means, and hierarchical clustering. (3) Acquire practical knowledge on artificial neural networks, including deep neural networks, convolutional neural networks, and recurrent neural networks using TensorFlow 2.0 API.

CS 3140: Software Development Essentials

Spring 2023, Fall 2022

Average Enrollment: ~120 students. A first course in software engineering and software construction, this course focuses on bringing the programming concepts learned in a first course in data structures and algorithms together to begin to teach students how to build more complex systems. The course covers introductory topics in testing, software design principles, design patterns, functional programming, and data storage and manipulation. Software Development Essentials is a course to help students design, test, and build larger end-to-end systems through a series of incremental learning objectives. By the end of the course, students should be able to design and implement a multilayer system with both front-end and back-end elements. Completed CS 2100 with a C- or better.

Rich Nguyen

Asst Professor, UVA

Instructor

CS 2501: Machine Learning for All

Fall 2021

Average Enrollment: ~35 students. Machine learning has been used in a wide variety of fields and has the great potential to solve the problems that we care about, such as climate change, misinformation, and pandemic predictions. Due to its importance, it is well agreed that every student should understand the impact of machine learning on her own field, and everyone should have an opportunity to learn it. This course is dedicated to non-computing major students. The primary focus is on giving an introduction to machine learning techniques applying to various problems. The primary goal of this course is to help students with non-computing backgrounds to build a mindset of how machine learning can help solve real-world problems. This course is called Machine Learning for All: From examples to algorithms, to emphasize two unique design features: (1) machine learning should be accessible to everyone and (2) teaching should start from examples instead of theory.

SYS 6016 / SDS 6050: Deep Learning (UVA MSDS Online)

Summer 2021, Spring 2021, Fall 2020

Average Enrollment: ~25 students. This is a graduate-level course on machine learning with fundamental concepts for computational data analysis, including pattern recognition, prediction, and visualization. Topics include applied math, machine learning basics, deep neural networks, convolutional networks, sequence modeling, generative learning, and deep reinforcement learning. The course will focus on using open-source libraries such as NumPy, Keras, and TensorFlow. Students are required to have sufficient computational background to complete several substantive programming assignments. Upon successful completion of this course, you will be able to: (1) Create an end-to-end machine learning project at scale using open-source libraries such as NumPy, Keras, TensorFlow, and Google Cloud. (2) Formulate various supervised, unsupervised, and reinforcement learning models. (3) Apply practical skill sets on designing, deploying, and analyzing deep network architectures on complex real-world problems. (4) Articulate concepts, algorithms, and tools to build intelligent systems. (5) Analyze advanced approaches currently pursued by the machine learning community.

CS 2150: Data and Program Representation

Fall 2020, Fall 2019, Fall 2018

Average Enrollment: ~105 students. This course is a second-year course for computer science majors. It is the primary data structures course in the University of Virginia's computer science curriculum. Unlike many other data structure courses at other institutions, it is intended as the third course in sequence, meaning that students are expected to have taken two semesters of Java (or equivalent, although some of the examples are specifically from Java). The course focuses on how programs and data are represented from the high level down to the low level. For programs, we examine (from high to low): abstract data types, Java code, C++ code, C code, assembly (x86) code, and a customized machine language. For data, we examine (also from high to low): abstract data types, objects, primitive types, and how numbers are encoded (both floats (IEEE 754) and integers (two's complement)). About two-thirds of this course is programming using C++. The remainder of this course uses other languages, including (in decreasing order): x86 assembly, IBCM (a machine language), C, Objective C, and shell scripting.

CS 2910: CS Education Practicum

Spring 2020

Average Enrollment: ~30 students per section Most of your TA responsibilities are defined by the instructor of the course for which you are TAing. This course will help you see how you can apply the idea of peer mentoring to your TA assignment to create positive TAing experience. This course covers logistics and ethics, learning theory, peer mentor role and effective feedback, diversity, and grading. We will also discuss concerns and how to deal with problem students and struggling students. You will have an opportunity to suggest and vote on special topics and sessions. This course is only open to Teaching Assistants in the CS department. First-time TAs are required to sign up for one credit of CS 2910 in the semester of their first TAing experience. CS 2910 can be taken only once for credit. we have three main goals: (1) Expose you to important ethical, diversity, and educational topics we believe every TA ought to understand, (2) Prepare you to educate, mentor, and support others, and (3) Help you adjust to the role of Teaching Assistants.

CS 6316: Machine Learning (Graduate Level)

Fall 2018

Enrollment: 120 students. Machine learning has been successfully applied to many different areas such as autonomous control of cars and robots, natural language processing, image recognition, health science, biology, and data mining. This course introduces fundamental concepts and methods to learn from data for computational data analysis, including pattern recognition, prediction, and visualization. The primary focus is on giving an introduction to machine learning techniques applying to various problems. The students in this course will: (1) Handle data from various fields and create end-to-end machine learning projects. (2) Formulate various supervised learning techniques including linear regression, logistic regression, regularized methods, support vector machine (SVM), decision trees, random forest (RF), and boosting. (3) Understand basic theory and applications of a few unsupervised learning techniques including dimensionality reduction, kernel PCA, and LLE. (4) Have hands-on knowledge of artificial neural network (ANN) and deep neural nets (DNN). (5) Implement several machine learning algorithms and their applications.

Courses Taught at UNC Charlotte

ITCS 1600: Computing Professionals Seminar

Fall 2017, Fall 2016, Fall 2015, Fall 2014

Average Enrollment: ~251 students. This course should be taken by all Freshmen during their first semester in the College of Computing and Informatics. This course is designed to assist with the intellectual and social transition to university by increasing the involvement of students in the intellectual life on campus and within the College of Computing and Informatics community. The course provides an orientation to resources available to students; promotes oral and writing skills; and enables students to develop a personal education plan. The course has three components: a seminar series, peer group engagement, and extra-curricular engagement. Activities include written reflections on all three components, individual performance in peer group engagement activities, peer review of other students in the class, and the development of a personal education plan.

ITCS 2600: Computing Professionals for Transfer Students

Spring 2018, Spring 2017, Spring 2016, Spring 2015

Average Enrollment: ~134 students. Transfer students are usually a diverse group of students with a diverse set of needs. To meet the challenges that many of these students face once they reach the four-year institution, this course conducts an in-depth transfer student orientation and connects transfer students to support resources that specifically meet their needs. Moreover, this course demonstrates how transfer students can successfully become ready for computing majors and concentration. Students will learn about setting goals, defining their dream career, getting hand-ons experience in all of the concentrations offered by the College, planning coursework, and working in a team. Several guest speakers and industry panels will discuss and explain, in detail, various aspects of a professional career in IT-related fields. Throughout this course, students will build a professional profile including their goals, values, dream career, student organizations, coding skills, communication skills, curriculum plan, professional network, team TED talk, resume, and a 30-second elevator pitch.

ITCS 4156: Introduction to Machine Learning

Spring 2018

Enrollment: 55 students. Introduction to the machine learning pipeline of data collection, feature creation, algorithms, and evaluation for classification and regression, with an emphasis on practical applications. Covers fundamental concepts, such as training, validation, over-fitting, and error rates in addition to commonly used machine learning algorithms, such as decision trees, Naive Bayes, and random forests.

ITCS 2215: Design and Analysis of Algorithms

Spring 2013

Enrollment: 51 students. Introduction to the design and analysis of algorithms. Design techniques: divide-and-conquer, greedy approach, dynamic programming. Algorithm analysis: asymptotic notation, recurrence relation, time space complexity and trade-offs. Study of sorting, searching, hashing, and graph algorithms.

Project-based Learning

ML4VA: Machine Learning for Virginia

Fall 2018 -- present

Total Participation: 340 students. My main objective is to prepare you to apply what you learn in this course to a real-world scenario, especially one that exists from the UVA local community to the state of Virginia at large. Through this 12-week project, you will be working in a team of three students to use machine learning to make meaningful contribution to the well-being of the state of Virginia and its residents. The project will provide you with a unique opportunity for exploring one or more areas of machine learning that we covered in the course. You should choose a data set, apply machine learning techniques to it and compare their performance with an well-known solution.

T3: Team TED Talks

Fall 2014 -- Spring 2018

Total Participation: 1,470 students. Team TED Talks is a project-based learning approach to advance student mindset on problem-solving. Project-based learning can convey that studying computer science is both exciting and useful by guiding students to work on projects that interest them and have real-world applications. Particularly, I'll explain three fundamental areas for success in building a project-based learning in computing courses: (1) understanding purpose, (2) embracing collaboration, and (3) celebrating ideas and solutions. By sharing my passion for learning and using a variety of teaching approaches, I aim to make the classroom an engaging and inspiring experience for computing students.

CharlotteHack: Connect.Code.Innovate

N. Rich Nguyen (Founder), Elizabeth Thompson, Maryalicia Johnson, Sarah Caldwell

January 29-30, 2016. In early 2016, Charlotte Hack provides an excellent venue to bring creative and innovative student coders, designers, and leaders together to solve healthcare and CS education problems. You will have the opportunity to create a fresh perspective to improve the current state of the technology by working together in a short bust of time and earn total prizes of $2,000. To help facilitate an enjoyable hacking experience for you, we've partnered with Premier Healthcare to provide free food and coffee throughout the event. Several industry mentors will be on site to get you started. In addition, we'll be offering a series of tech talks throughout the event. Let's create together!

Alum Teaching Assistants

TA Contribution. My teaching experience would not be completed without the help of my current and former teaching assistants. I express my gradtitude to their dedication and effort when they were working with me.

Alanna Zoscak

Virginia '22

Johns Hopkins University

John Chrosniak

Virginia '22

UVA Graduate School

Aubrey Winger

Virginia '22

UVA Graduate School

Emery Shelly

Virginia '23

Graduate School

Tingwei Zhang

Virginia '23

Graduate School

Brian Tufts

Virginia '23

Graduate School

Medhini Rachamallu

Virginia '22

Engineer at Alltrna

Jason Yu

Virginia '23

SWE Intern at Slack

Annie Cao

Virginia '22

SE at Google

Adriel Kim

Virginia '22

SE at Microsoft

Max Lennon

Virginia '22

PhD Student

Palash Shah

Virginia '22

SE at Roboflow

Gustavo Moreira

Virginia '22

RA at UVA

Yuxin Wu

Virginia '21

MS Student at UCLA

Ethan Gumabay

Virginia '21

SE at Amazon AWS

Richard Song

Virginia '21

Investment Banking at Lazard

V Layne Berry

Virginia '21

PhD Student at UT-Austin

Anna Bonaquist

Virginia '21

SE at Capital One

Sarah Zhou

Virginia '21

Associate at BCG

Richard Wang

Virginia '21

SE at YouTube

Siyeon (Shaun) Kim

Virginia '21

MS Student at Columbia

Navid Jahromi

Virginia '21

SE at Palantir

Jake Grigsby

Virginia '21

PhD Student at UVA

Jeffrey Yoo

Virginia '21

MLE at HyperConnect

Clara Na

Virginia '21

PhD Student at CMU

Kaiying Shan

Virginia '20

SE at TikTok

Brady Boylan

Virginia '20

Quant Analyst at IBM

Johnny Wong

Virginia '20

MS Student at UVA

Goutham Patley

Virginia '20

SE at Hike Messenger

Akanksha Nichrelay

Virginia '20

SE II at Lucid Group

Arjun Malhotra

Virginia '20

SE II at Lucid Group

Zoya Yeprem

Virginia '19

AIOps at IBM

Jibang (Charlie) Wu

Virginia '19

PhD Student at UVA

Jia (Drake) Lei

Virginia '19

SE at Microsoft

Jinghui Chen

Virginia '19

Asst Professor at Penn State

Christian Chavis

Charlotte '19

InfoSec Engineer at BofA

Eric Hatfield

Charlotte '19

QA Analyst at Paymentus

Joshua Hutcheson

Charlotte '19

SE at SealedAir

Viktoria Karpitsky

Charlotte '19

Scrum Master at Wells Fargo

Noah Kaplan

Charlotte '19

SE at Solarwinds

Asfandyar Hafeez

Charlotte '18

InfoSec Analyst at Lowe's

Kristin Horton

Charlotte '17

SE at Bank of America

Gyovanni Boston

Charlotte '17

Analyst II at Bank of America

Chandani Patel

Charlotte '17

Consultant at Wells Fargo

Shannon Butler

Charlotte '17

SE at Fidelity

Darshesh Patel

Charlotte '17

SE at Bank of America

Jalisa Stevens

Charlotte '16

Data Analyst at Allstate

Arion Almond

Charlotte '16

SE at RedVentures

Matthew Agius

Charlotte '16

SE at Fidelity

Franklin Young

Charlotte '15

SE at AvidXchange

Carla Bendezu

Charlotte '15

Engineer at Lowe's

Micheal Hester

Charlotte '15

SE at Tesa Tape, Inc

Cua Thao

Charlotte '15

Architect at Stewart&Conners

Adwait Kulkarni

Charlotte '13

SE at Google