Independent Work Seminar Offerings - Spring 2019
Title: COS IW 02 - AI Education
Instructor: Olga Russakovsky
Meeting time: Monday 3 - 4:20 pm in Computer Science Room 402 Maximum Enrollment - 8
Abstract: Description: Artificial Intelligence (AI) is rapidly changing the world. AI has amazingly broad applications, and we need people with a comparably broad set of experiences and worldviews working on AI problems. However, there is a distinct lack of diversity of people in the AI community, leading to a lack of diversity of thought. This results in technology biased for certain demographics, needs and values, accruing the benefits of AI to the few instead of the all. The solution to the problem has to start with education.
This seminar is aimed at students who are interested in studying AI education. The projects will range from developing effective ways to teach AI concepts (more appropriate for students who have taken COS 324 or other ML courses) to evaluating different educational strategies (appropriate for students with all backgrounds who are interested in statistical data analysis). The focus will be on reading literature related to inclusive education and translating that to practical innovations within the Princeton AI curriculum.
One natural testbed for the findings is the Princeton AI4ALL summer camp (http://ai4all.princeton.edu). The camp, which will be in its second year in summer 2019, teaches introductory AI to 11th graders from racial/ethnic groups dramatically underrepresented in AI: Black, Hispanic/Latino/Latina, and Native American. IW students may have the opportunity to deploy their findings during the camp while working as counselors, instructors, or evaluators. They may also have an opportunity to collaborate with the AI4ALL foundation (http://ai-4-all.org) to study effective practices for AI education across multiple universities or in online courses. Note that while such longer-term collaborations are encouraged (and students interested in these will be given priority for the seminar) they are by no means required.
Course structure:
- Week 1: Introduction to the topic, discussion of relevant literature
and potential project ideas
- Week 2: Project pitches and discussion (each student does a 4 min
presentation + 4 minute group discussion to solicit feedback)
- Weeks 3 onward: Four 15-20 minute project updates to solicit feedback
from the group (thus each student can expect to get bi-weekly feedback
on their project and to share their insights with others)
- All students are expected to attend all weekly meetings
- Students can work in pairs towards a common goal although the
individual contributions/ares of exploration should be clear
Title: COS IW 03 - Apply Machine Learning In Real World Applications Maximum Enrollment - 12
***SEMINAR IW 03 HAS REACHED CAPACITY, please select from the remaining seminars. ***
Instructor: Xiaoyan Li
Meeting time: Monday 11 am - 12:30 pm in Computer Science Room 401
Abstract: In this seminar, you will learn many machine learning methods, such as naïve Bayes classifier, Support Vector Machines, Decision Trees, AdaBoost, and Random Forest, etc. While machine learning is a broad growing field, this seminar is focusing on traditional supervised machine learning. Students will choose at least one data set of interest and propose some questions that can be answered from the data set by applying two or more machine learning models and performing data analysis. A complete process of data analysis consists of raw data collecting, feature extraction, missing data imputation, feature selection, model fitting, making predictions for unseen data, performance evaluation, and error analysis, etc.
There are no prerequisites beyond COS217 and COS226. However, it would be helpful if students know Python already for they will use existing machine learning packages in Python. But this is not required. There are some online Python tutorials and students can usually learn Python by themselves in a week.
This seminar will meet once a week. Class times are used to present machine learning methods and data analysis techniques, and discuss students’ project progress. Each student will report their weekly progress on their project either in class or during a one-on-one meeting with the instructor. Each student will also be assigned one topic on machine learning methods or data analysis techniques to present in class with some guidance from the instructor.
We will help students find a topic during the first two classes. Each student should develop an individual project which is suitable for one semester work and may have the potential to extend to a senior thesis. A thorough solid project may also lead to publication in some conference or workshop in the field.
Title: COS IW 04 - Computer Vision and Deep Learning Maximum Enrollment -- 8
Instructor: Jia Deng
Meeting time: Monday - 3 - 4:20 pm in Computer Science Room 401 Maximum Enrollment - 8
Abstract: Computer vision is a subfield of AI that seeks to make computers see. This seminar focuses on developing deep learning algorithms for core computer vision tasks such as detection, tracking, segmentation, pose estimation, and depth estimation. You will be given a list of projects to choose from, or optionally propose your own project with the instructor's approval. In a typical project, you will choose a computer vision task, study related work, analyze state-of-the-art algorithms, and propose and implement potential improvements. Or you can explore multitask deep learning for computer vision, where you develop methods to perform multiple tasks simultaneously and synergistically. A third possibility is to build easy-to-use computer vision tools/services based on state-of-the-art research prototypes. With the instructor's approval, you may team up with other students to tackle a project of a bigger scope. In class, you will report your progress and/or discuss research papers. You are expected to program extensively in Python. No prior experience of neural networks or machine learning is expected.
Title: COS IW 05 - A Programmable & Safe Internet of Things Maximum Enrollment - 12
Instructor: Amit Levy
Meeting time: Tuesday 3 - 4:20 pm in Computer Science Room 301
Abstract: The Internet of Things is an exciting new ecosystem for building applications in a variety of domains: sensor networks that help improve urban environments, wearables that make computing more personal, and networks that make our homes and workplaces more energy efficient and comfortable. But who will have control over these devices? Will they be empowering tools for end-users, or tightly controlled by device manufacturers? Will they enhance our trust in computers, or degrade it?
The limited resources available in the microcontrollers that power the Internet of Things suggest that there is no choice but to accept insecurity and cede control to device vendors. But a new operating system, called Tock, enables secure multiprogramming and extensibility in low-power, Internet of Things applications, despite these limited resources. Tock leverages both hardware and language-based mechanisms to isolate third-party applications and device drivers on devices that can run for years on batteries. However, many open questions remain. What kinds of novel applications does this multiprogramming enable? Which developers tools are necessary to administer a programmable networking of Things? How can we express security policies in computers with limited user interfaces?
Participants in this seminar will choose from a wide range of projects from deploying Internet of Things networks, prototyping novel applications, building hardware platforms, implementing new operating system features, and designing and enforcing security policies. Successful projects can expect to integrate their work into the Tock open source project, release their applications or hardware platforms, and share findings from deployments.
One of COS 318, COS 461, COS 462, COS 432, ELE 464, or permission of instructor is required. Some familiarity with either C or Rust programming will be necessary for most projects. Students may work in groups for sufficiently ambitious projects. We will spend the first few meetings of the semester learning about Internet of Things applications, microcontrollers, and the Tock operating system. We will use the remaining meetings for project updates, formal student presentations, and discussions on how to do background research, prepare a presentation and write a final paper.
Title: COS IW 06 - Natural Language Generation Maximum Enrollment - 12
Instructor: Karthik Narasimhan
Meeting time: Wednesday 3 pm - 4:20 pm in Computer Science Room 401 EXCEPT March 27th (Location TBD)
Abstract:
Title: COS IW 07 - Help Future Computer Science Students Learn Computer Science! Maximum Enrollment - 12
Instructor: Robert Fish
Meeting time: Tuesday 3 pm - 4:20 pm in Computer Science Room 302
Abstract: How would you like to have an IW project that could have lasting value for Princeton CS students? This seminar focuses on projects that try to enhance the computer science learning environment at Princeton (or perhaps anywhere else!). Recent years have seen a tremendous upsurge in both the interest and deployment of online learning platforms. Here at Princeton, some classes use a hybrid approach with online learning being supplemented and enhanced through classroom-based precepts and face-to-face one on one sessions. Extending this concept, there is some thought that people need learning environments that also include a degree of self-pacing, as well as engaging a variety of learning styles in the educational process.
In this seminar, students will choose some computer science concept from COS 126, 217, 226 or other Princeton Computer Science courses. You might pick some interesting concept which you think you can explain well to other students. Some examples might be 1) the dynamic operation of various gates and circuits in the TOY architecture or 2) visualizing function calls and the run-time stack frame for different functions (return types, parameters, optimizations on/off). For their projects, students will design and build an online learning experience that is targeted at whatever concept they choose. It can include videos, graphic visualizations, quizzing mechanisms, 3D imagery, games, or anything else that you can think of which might help students understand the concept. The project should also include an evaluation component by which mastery of the ideas exposed to them may be assessed. A bonus would be utilizing the system to compare learning with it to a conventional approach.
Some possible projects will be suggested early in the seminar, but students are also free to use their imagination and pick their own topic.
Students may pair up on these projects, creating a joint idea for a learning environment, with each student concentrating on some aspect of the software with a division of labor of frontend, backend, assessment, data analysis, etc. The learning and use of open source tools, including tools such as Open EdX, Django, and the D3 visualization library, etc. is encouraged in order that students may create the most effective online learning environments.
Some examples of past projects include an automated COS 226 quizzing system, visualizations of stack and heap data structures, user interfaces to improve student progress tracking, a simplified source code control tutorial, introducing elementary machine learning algorithms, and gamification of COS 126 assignments. \
Title: COS IW 08 - Programs Generating Programs Maximum Enrollment - 12
Instructor: Aarti Gupta
Meeting time: Thursday 3 - 4:20 pm in Computer Science Room 301 EXCEPT March 28th (Location TBD)
Abstract: Do you wish sometimes that programs would just write themselves? Wouldn’t it be great if you could somehow say what a program should do, sketch a program outline, but the rest would get automatically generated? While this is difficult to do for Java and C programs (and COS 126/217/226 programming assignments!), it is quite possible in domain-specific languages for a variety of applications. Indeed, automated synthesis of programs is an active area of research in programming languages and formal verification. Available tools aim at automatically generating programs by filling in holes in a partially-complete program sketch or by using input-output examples, optionally using grammar rules that define the underlying search space of candidate programs.
Students in the seminar will choose from a range of program synthesis domains and applications, or choose one of their own interest. Examples include automatic parallelization of array-handling programs, generation of efficient bit-twiddling code, or creation of spread-sheet macros, etc. They will use available synthesis tools (such as Sketch, Rosette, Prose), design their own libraries of program sketches, specify the correctness requirements, and experiment with different synthesis strategies to generate a variety of target programs. Those interested in backend techniques can also design and implement new synthesis strategies using SMT (Satisfiability Modulo Theory) solvers that perform the search and verification in these tools. Students may work on a team project with prior permission of the instructor, and where each student has a distinct semester-size component of the project.
There are no prerequisites for this seminar beyond COS 217 and COS 226; familiarity with functional programming or proofs of correctness (e.g., COS 326) would be useful. Students will be expected to attend all seminar meetings. The first two seminar meetings will provide background and introduction to program synthesis tools. The remaining meetings will be used for discussions on project proposals, techniques, and updates; with students reporting their progress each week and doing a formal presentation at the end.
Title: COS IW 09 - Information Discovery through Analysis of Complex Networks Maximum Enrollment - 12
Instructor: Andrea LaPaugh
Meeting time: Wednesday 11 am - 12:20 pm in Computer Science Room 301 EXCEPT March 27th (Location TBD)
Abstract: Networks (or graphs, if you prefer) are used to model relationships in a wide variety of contexts such as friendship in social networks, protein-protein interaction in molecular biology, and communication in the internet of things. We call these “complex networks” because they arise from complex systems and are neither random nor regular. The tools of network analysis can be applied broadly to discover useful information about relative strengths, pivotal roles, community structure, and other properties within a set of related objects. They can be used to understand change over time of a network or processes on a network such as disease transmission. They can be combined with other techniques such as statistics and machine learning.
The typical project in this independent work seminar will focus on a collection of data describing interrelated objects. There are many choices for sources of data, for example government data sites, social network sites, and university research sites. Each student will formulate a set of questions about his or her data and apply network analysis (possibly combined with other analyses) to answer the questions. Projects that develop new techniques for analyzing relationships are also possible. Projects from past years include “Analyzing Political Network Structures on Twitter,” “A Graphical Analysis of Investment Patterns in the Startup World,” “Use of random-walk Centrality Measures in Defending Against Social Network Malware,” and “Movement in NYC: Analyzing and Predicting Short-Term Movement between New York City Neighborhoods.”
There are no prerequisites for this seminar beyond COS 217 and COS 226. There are many software tools available for network analysis, often using Python. Therefore, familiarity with Python is helpful but not at all necessary. Students may work in pairs IF the project can be split so that each student has his or her own semester-size piece of the project. We will spend the first three meetings of the semester brainstorming ideas and developing project proposals. During these meetings we will also discuss network analysis methods and how to do research. The remaining meetings will be used for project updates, formal student presentations, and discussions on how to do background research, prepare a presentation and write a final paper.
Title: COS IW 10 - Robot Construction Maximum Enrollment - 12
Instructor: David August
Meeting time: Wednesday, 1:30 - 3 pm in Computer Science Room 301 EXCEPT March 27th (Location TBD)
Abstract: Working as a team, you will design and fabricate a (preferably large) working robot. As your contribution to your robot team, you will be responsible for the design, implementation, integration, and evaluation of your robotic subsystem. You will gain experience with sensors, actuators, embedded controllers, and fabrication techniques.