Courses at UVA

CS 4774: Machine Learning

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 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 2150: Data and Program Representation

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 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!