Info 290T

Special Topics in Technology

1-4 units

Course Description

Course may be repeated for credit as topics in technology vary. One to four hours of lecture per week; two to six hours of lecture per week for seven weeks. Specific topics, hours, and credit may vary from section to section and year to year.


Consent of instructor

Courses Offered

In this course you’ll learn industry-standard agile and lean software development techniques such as test-driven development, refactoring, pair programming, and specification through example. You’ll also learn good object-oriented programming style. We’ll cover the theory and principles behind agile engineering practices, such as continuous integration and continuous delivery.

This class will be taught in a flip-the-classroom format, with students programming in class. We'll use the Java programming language. Students need not be expert programmers, but should be enthusiastic about learning to program. Please come to class with laptops, and install IntelliJ IDEA community edition. Students signing up should be comfortable writing simple programs in Java (or a Java-like language such as C#).

This class will cover the principles and practices of managing data at scale, with a focus on use cases in data analysis and data preparation for machine learning. We will cover the entire life cycle of data management and science, ranging from data preparation to exploration, visualization and analysis, to machine learning and collaboration.

The class will balance foundational concerns with exposure to practical languages, tools, and real-world concerns. We will study the foundations of prevalent data models in use today, including relations, tensors, and dataframes, and mappings between them. We will study SQL as a means to query and manipulate data at scale, including performance concerns like views and indexes, query processing and optimization, and transactions, all from a user perspective. We will study the foundations and realities of data preparation, including hands-on work with real-world data using standard Python and SQL frameworks. We will explore data exploration modalities for non-programmers, including the fundamentals behind spreadsheet systems and interactive visual analytics packages. We will look at approaches for managing the machine learning lifecycle of data preparation, model selection and training, model serving and monitoring. Time permitting we will look at technologies for moving, sharing, and caching data including event streaming systems, key-value/document stores, log analytics, and search engines.

This is a hands-on full-stack web development course, and students will work on all aspects of the full-stack web development process. Individual and team assignments will enable students to develop skills in data modeling, database and API design, responsive front-end design, version control, and deployment using Python, JavaScript, and full-stack frameworks such as Flask. The goal of this course is to help students understand different technologies and work towards being able to implement complete web-based projects for desktop and mobile.

This class will be a modern take on a traditional database class, covering the basics of dealing with data at scale from a user-centered perspective, over the entire life cycle of data management, ranging from data cleaning, extraction, and integration, to analysis and exploration, to machine learning and collaboration. The class will mix traditional lectures and assignments with student paper presentations and a class project. Experience with programming, a basic understanding of computer systems, data structures, and algorithms expected.

This course surveys privacy mechanisms applicable to systems engineering, with a particular focus on the inference threat arising due to advancements in artificial intelligence and machine learning. We will briefly discuss the history of privacy and compare two major examples of general legal frameworks for privacy from the United States and the European Union. We then survey three design frameworks of privacy that may be used to guide the design of privacy-aware information systems. Finally, we survey threat-specific technical privacy frameworks and discuss their applicability in different settings, including statistical privacy with randomized responses, anonymization techniques, semantic privacy models, and technical privacy mechanisms.

Students will build tools to explore and apply theories of information organization and retrieval. Students will implement various concepts covered in the concurrent 202 course through small projects on topics like controlled vocabularies, the semantic web, and corpus analysis. We will also experiment with topics suggested by students during the course. Students will develop skills in rapid prototyping of web-based projects using Python, XML, and jQuery.

Last updated:

February 15, 2019