COMS 4995 002: Design using C++.
Professor: Bjarne Stroustrup.
Prerequisites: Graduate standing or senior undergraduate and an interest in the use of programming languages and tools.
Note: There will be no recording or remote access.
Abstract: This course will use the C++ language and some C++ libraries as examples of software design and design decisions. It is not a C++ programming course though it will use the principles and design decisions that underly the major C++ features as prime examples and see how they are expressed in actual features and libraries. The evolution of those ideals and the support offered is also examined. Some experience with C++ and other languages is assumed. The book “A Tour of C++ (3rd edition)” will be read over the first half of the course to give the students a common foundation in C++.
“Design” is not primarily a book skill; it involves a variety of principles and techniques that must be practiced for mastery. Consequently, the second half of the course is devoted to 3-person projects involving design, implementation, documentation, and presentation of projects of the students’ choice (after approval from the professor). Students are expected to attend other students’ presentations.
COMS 4995 009: Data Driven Design for Social Innovation
Professor Nakul Verma is offering a new interdisciplinary project-based COMS 4995 course in Fall 2023 “Data Driven Design for Social Innovation”. Please see the course description below. Interested students should apply by filling in this application form asap: https://forms.gle/twXxYxWH2Yd235Ns6.
Cross-disciplinary project-based course where teams of students from various departments work together on creating products or services to address important social problems. We will introduce and study a diverse set of ethnographic, psychological, and data science tools to help students generate customer insights, and build and test prototypes for a large-scale social challenge. Student projects will be closely guided by the instructors and domain experts The final deliverables will be shared with the domain expert to determine potential application of the concepts beyond the course. This could include advancing ideas through the formation of a startup, incorporating ideas into the domain expert’s work, or establishing partnerships with organizations working on similar challenges.
Course website: https://www.cs.columbia.edu/~verma/classes/ddsi/index.html
COMS 4995 013: Innovation & Design Lab
Professor: Gary Zamchick
Abstract: Innovation & Design Lab inculcates the innovative mindset needed to envision inventive applications, deliver meaningful experiences to end users, and generate valuable products and services. The class is open to both undergraduate and graduate students.
Gary Zamchick has worked in and out of places like AT&T Labs Research, Sarnoff, and IBM as well as boutique design firms like Rockwell Group and Parson’s Institute of Information Mapping. His projects are diverse as designing the Disney World parade, innovation labs for Coca-Cola, banking experiences for Citibank and Tata, kiosks for intelligence agencies, on-demand learning models for IBM, and illustrating the best-selling “French for Cats” humor books. He co-founded WordsEye, one of the first startups to come out of Columbia’s Innovation Entrepreneurship program. Recently, he was responsible for Innovation Strategy at Delos, a wellness company.
COMS 6998 005: Topics in Mobile X
Professor: Xia Zhou
Prerequisites: Because this is a high-level course, we assume that students already have a solid understanding on the basics of some areas including networking, communication, and machine learning. There are multiple ways of demonstrating a networking and machine learning background, including taking undergraduate networking class, machine learning class, or equivalent classes, and experiences of working on related projects. Course project is an important part of this class. Students must have good programming skills and project experiences.
Abstract: Topics in Mobile X is an upper-level course on mobile computing and ubiquitous systems, covering a broad range of advanced and interdisciplinary topics in mobile computing, networking, and applications. All these topics center on unique challenges faced on bringing computation, networking, and applications to the mobile computing platform — a platform that is constrained in form factor, energy, and computation power, with examples such as smartphones, smart watches or wrist bands, smart glasses, and more. Example topics include mobile communication and networking, mobile sensing, mobile human-to-computer interaction (HCI), mobile learning/AI, and mobile security.
For each topic, we will study both conventional perspectives and recent research trends. Students will learn key principles in mobile computing research, understand the state of the art in this research area, and gain experiences of carrying out original research through class projects. The end goal is to generate publishable results by the end of the term. In addition, students will practice their skills in paper reading/writing and public presentation in the form of weekly research essays, class discussion, paper critics, project report and presentation.
As a research-oriented course, this course is based on research papers in top-tier conferences. No particular textbooks are required, but following textbooks are good references for students to refresh networking background and better understand papers.
- Theodore Rappaport. Wireless Communications: Principles and Practice.
- William Stallings. Wireless Communications and Networks.
- Pei Zheng, Larry L. Peterson, Bruce S. Davie, and Adrian Farrel. Wireless Networking Complete.
- James Kurose and Keith Ross. Computer Networking: A Top-Down Approach.
- Larry Peterson and Bruce Davie. Computer Networks: A Systems Approach.
- Andrew S. Tanenbaum. Computer Networks.
Course Website: https://www.cs.columbia.edu/~xia/mobilex/
COMS 6998 006: Readings in Programming Language Design
Professor: Bjarne Stroustrup.
Prerequisites: Graduate standing or senior undergraduate and an interest in the use of programming languages and tools. An interest in the history of technology would be helpful.
Note: There will be no recording or remote access.
Abstract: This course involves reading, presenting, and discussing papers on programming language design. In the first lecture, I outline some dimensions of language design and give examples of aims and ideals that have driven the development of languages. I also present a (necessarily incomplete) list of classical design papers.
This is not a comparative languages class nor a type-theory class. The focus on presentations should be on ideals, aims, and principles so that language features are presented simply as examples. For older languages it is possible and desirable to discuss how the ideas worked out in actual use and evolved. Uncritical “sales jobs” of languages – as are not uncommon in early descriptions of new languages – are not acceptable as presentations. You might, of course, choose to present your favorite language, but maintain a critical and objective perspective.
Examples of language design papers (both good and bad, IMO, but all peer reviewed) can be found in the ACM History of Programming Languages conferences:
- HOPL-1 (1978): https://dl.acm.org/doi/book/10.1145/800025
- HOPL-2 (1993): https://dl.acm.org/toc/sigplan/1993/28/3
- HOPL-3 (2007): https://dl.acm.org/doi/proceedings/10.1145/1238844
- HOPL-4 (2021): https://dl.acm.org/toc/pacmpl/2020/4/HOPL
Each student or pair of students will select a paper and present it to the class. Presentations are expected to last 45-60 minutes. A paper to be presented must be approved in advance by the professor and announced at least a week before so that all students can read it in advance.
Students are expected to read each paper in advance to be able to contribute to the discussion after the presentation.
Students are expected to attend every class and participate in the discussions after the presentation of each paper.
There will be no final exam. Instead, each student will write a paper (minimum 2,000 words) on a topic of their choice related to language design. Topics and brief outlines are to be submitted for approval at least two weeks before the day of submission.
COMS 6998 020: TOPICS IN CLOUD COMPUTING
One of the most significant transformations in the computer sector over the last decade has been the rise of cloud computing. Companies are progressively transferring their tasks to external cloud platforms and utilizing advanced global services that were previously unattainable within individual data centers. Nonetheless, the construction and utilization of cloud systems entails tackling numerous intricate research challenges. This research seminar will explore both industrial and academic contributions to cloud computing. Participants will engage in guest presentations delivered by prominent authorities in the field, analyze and guide discussions on research papers, and collaborate in small groups to undertake a research project throughout the semester.
COMS 6998 24: Advanced Computer Networks (syllabus, COMS, ELEN)
Professor: Ethan Katz-Bassett
Advanced Computer Networks (syllabus, COMS, ELEN)
The class will give you a richer understanding of networking, focusing on principles and systems that have shaped the Internet. Topics covered include routing, content delivery, congestion control, data centers, software-defined networking, and the cloud. The course will cover classic and contemporary networking literature. It will offer training on how to read research papers on computer networks and systems, providing a solid basis for future advanced topics classes, research, and work in industry. I will guide discussion of the papers by suggesting topics and asking questions, supplemented by periods of lecture.
COMS 6998 23: Internet Measurement (syllabus, COMS, ELEN)
Professor: Ethan Katz-Bassett
In this course, we will investigate important problems, techniques, results, and challenges that arise in measuring the Internet. We will explore both what measurements tell us about the Internet and how we can leverage what they tell us to improve the Internet and services that run on it. We will learn to measure various aspects of the Internet, including topology, routing and routing policies, performance, failures, traffic, and applications. Researchers often talk about Internet measurement as being analogous to astronomy, in that we take observations from afar in order to understand how a system works. The class will be discussion-based. Students will conduct small research projects in groups — in past offerings of this course, most students published their projects in peer-reviewed venues.