Independent Work Seminar Offerings - Fall 2020
COS IW 02: Natural Language Processing
Instructor: Christiane Fellbaum
Meeting Time: Fridays, 11:00am-12:20pm
Natural Language Processing, a sub-field of AI, tries to understand and model properties of human language and the ways it is learned, produced and interpreted by speakers. Participants in the seminar will choose from a wide range of topics including sentiment and opinion analysis, argument and bias detection, identification of fake news, computational humor, question answering and automated reasoning, in English or another language of their choice. Using datasets constructed for their project from available text corpora, news services, blogs, tweets, etc., they will apply (and possibly improve on) existing pre-processing tools for word segmentation, part-of-speech tagging, morphological analysis and syntactic parsing. The focus will be on the analysis of explicit or implicit meaning in texts, on the word, sentence or document level. Different approaches to semantic analysis, using lexical resources and/or vector space models, will be considered and applied. Projects may explore deep learning.
COS IW 03: Invention and Innovation -- Entrepreneurial Lessons for Computers Scientists
Instructor: Robert Fish
Meeting Time: Wednesdays, 3:00-4:20pm
How does an idea for an invention actually become an innovation in the marketplace? You may be a computer programming wizard, but there is a lot more to it than just fingers on the keyboard. This seminar, in concert with your developing an independent project of your choice, introduces some of the elements of thinking and developing an idea into a going concern. Your project will include a software prototype, a presentation, and a paper that explores the feasibility of your idea as a business. To help you frame and complete your project, we will discuss distinctions between invention and innovation, various brainstorming and invention methodologies, the DARPA methodology for idea screening, an introduction to intellectual property including patents, aspects of a simple business plan, and the elements of an “pitch deck.” Typically, we have some interaction with the Keller Center's program for entrepreneurial activities. For the more adventurous, the possibility exists for you to share your idea in a real startup pitch event and report on the results.
Students may pair up in these projects, creating a joint idea for an enterprise, with each student concentrating on some aspect of the software with a division of labor of frontend, backend, mobile app, data analysis, etc. This IW seminar is complementary to COS 448 (Innovating across Technology, Business, and Marketplaces) and would be appropriate both before and after taking COS 448. Also, if you’ve started a project with some entrepreneurial aspects in COS333, you might want to consider developing it further in this IW Seminar.
COS IW 04: Help Future Computer Scientists Learn Computer Science
Instructor: Robert Fish
Meeting Time: Tuesdays, 3:00-4:20pm
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 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. Weekly meetings will include some initial brainstorming exercises, then we will concentrate on putting together project proposals, and then finally, weekly project management presentations that will help students keep their projects on track.
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.
COS IW 05: Near-Term Quantum Computing -- Programming and Architectures
Instructor: Margaret Martonosi
Meeting Time: Fridays, 3:00-4:20pm
This IW seminar will engage students in projects related to Quantum Computing. We will make use of publicly available QC resources to write and run QC programs, such as IBM’s Qiskit. The seminar will not require prerequisites beyond COS 217 and COS 226, but students should be ready to read challenging technical papers and learn the intricacies of this exciting and fast-changing area.
COS IW 06: Domain-Specific Languages
Instructor: David Walker
Meeting Time: Mondays, 1:30-2:50pm
Domain-specific languages (DSLs) allow programmers accomplish sophisticated repeated tasks using simple, compact notation. DSLs have been developed to query data bases (SQL) or XML (XQuery), to configure routers (CISCO IOS), to solve machine learning problems (TensorFlow), to transform text documents (awk), to search the web (Google search bar), to generate documents (Latex), to control your phone (IFTTT, Apple Shortcuts), to create music (Chuck), to write down optimization problems (AMPL), to specify logical formula (SMTlib), to draw plots, graphs (gnuplot) or diagrams (pic), and many more. In this seminar, students will design and implement their own domain-specific programming language. Doing so involves defining the key data types and operations over those data types in your domain. Students are encouraged to think about the compositionality of their primitives and to begin by working through examples on paper. To implement the design, students can choose to define a syntax, implement a parser and an interpreter, or students may choose to develop an embedded domain-specific language as a library inside some other, more general language (such as Python). Some students interested in a more theoretical independent work experience can work on defining a semantics or type system for their language and proving properties of their definitions. Other students can focus on optimizing or compiling their DSL. Still other students may choose to try implementing algorithms that synthesize DSL programs from input-output examples.
COS IW 07: Random Apps of Kindness
Instructor: Alan Kaplan
Meeting Time: Thursdays, 11:00-12:20pm
The overall goal of this IW seminar is to design, develop and experiment with mobile technology that can be used to help individuals or communities. Topic areas include, but are not limited to: first response, accessibility, environment, sustainability, social activism, civic computing, healthcare, crowdsourcing, etc. In general, IW projects must try to have an impact - locally, nationally or even globally.
Some examples of past projects include: safe bike navigation, urban garden planning, drowsy driver detection, kite aerial photography, physical therapy exercise assessment, water safety. Abstracts of previous semester projects can be found here: https://www.cs.princeton.edu/~ak18/teaching.html
The objective of IW projects in this seminar is not just to "write an app, " but rather to create some innovative and general solution to a problem and demonstrate/evaluate its utility and benefits. Examples of "mobile technology" include: Android (Java or React Native), Raspberry Pi, UAVs, etc.
COS IW 08: Algorithms and Uncertainty
Instructor: Sahil Singla
Meeting Time: Thursdays, 11:00am-12:20pm
Numerous computer science applications can be modeled as discrete/continuous problems where we want to optimize a given objective function while satisfying some constraints. Although there are many known algorithms for such problems, often they rely on exact knowledge of the problem inputs. For many applications, however, we only have estimates on these inputs. How can we design algorithms that sequentially make irrevocable decisions without knowing the entire input? Notice we will need adaptive algorithms that change their behavior depending on the realization of the input. The goal of this course is to learn/develop algorithms with provable performance guarantees for such optimization under uncertainty problems.
Required background is COS 226. Familiarity with COS340 / COS324 / COS445 is a plus, but not required.
COS IW 09: Using Publicly Aailable Data to Learn, Explain, Evaluate, and Improve
Instructor: David Dobkin
Meeting Time: Tuesdays, 1:30-2:50pm
The so-called big data revolution has led to the creation of data sets of various sizes that provide information about real world situations. Datasets of significant size are available in a variety of domains. These domains range from information about the operations of cities (including, for example, housing data, transportation data and police data in New York city among other urban centers) to health data (including epidemiological data on the spread of diseases and genomic data from thousands of individuals) to sports data (including information about virtually every pitch thrown in a baseball game since 1987). Given this wide availability of data, a challenge for the data scientist is to find effective ways to use the data to extend our knowledge of the situations represented by the data. This task involves exploring datasets, cleaning data, asking good questions, and presenting results in the most compelling fashion. The typical project will begin either with a question or with a dataset. In the former case, the goal will be to find datasets that help to answer the question and to explore. In the latter case, the goal will be to explore the data set to learn new and interesting things.
COS IW 10: Apply Machine Learning in Real World Applications
Instructor: Xiaoyan Li
Meeting Time: Tuesdays, 11:00am-12:20pm
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.
COS IW 11: Computer Science Education Research
Instructor: Ibrahim Albluwi
Meeting Time: Thursdays, 11:00am-12:20pm
Ever since computers were used researchers have raised and addressed questions on how people learn programming and how programming should be taught. Such questions are becoming more and more important as computer science programs experience increasing enrollments and more diversity in the taught material and used tools. The following are just a few examples of questions addressed in the field of computer science education research: What common misconceptions do novice programmers have? How do novice programmers comprehend code? What is the best programming language to use in CS1? What difficulties do students have with recursion? How should programming knowledge be assessed? Is ordering shuffled lines of code a good way to assess programming? What factors affect interest and retention in computer science programs?
In this seminar, you will conduct your own research study in computer science education. This could be a quantitative study where you analyze a dataset of student code or data, a qualitative study where you interview students or instructors to better understand a certain phenomenon or behavior, an experiment where you evaluate the effect of a tool or a teaching method on learning, a design study where you propose a design for a learning activity or a curriculum that is grounded in theory, or a review where you summarize, organize and analyze research published in a certain area in computer science education.
Examples of CSEd research IW projects and senior theses done previously include: A study of student difficulties with the running time analysis of algorithms in COS 226, an analysis of student CheckStyle errors in COS 126, a design of a curriculum for teaching computer science in prisons, a study of different methods for teaching ethics in computer science, a review of research on pair programming and a study of gender differences in the beliefs of students at the computer science department.