Is This The Same As Prof. Ferguson's 6156 Cloud Computing Course? No. 6156 Topics in Software Engineering is a “topics” course, like 6998 Topics in Computer Science, where each section is really a different course. This course may be repeated for credit (different sections) with advisor approval. Prerequisites Students should have already completed at least one 4k level software systems course at Columbia (any 41xx course except not 416x/417x), preferably 4156 or 4181. Who Should Take This Course This section of 6156 is a graduate seminar oriented towards students who aspire to be researchers or technology leaders and who are highly self-motivated to pursue their own forward-looking topic within software engineering, broadly construed. 6156 is a track elective for the Software Systems track and is accepted for the Computer Security track for students who choose security or privacy topics. It may be accepted as a track elective for other tracks whose students choose topics relevant to their track (contact your track advisor) and is a technical elective for all CS MS and undergraduate tracks. Objectives 6156 is not "more" 4156, and not "more advanced" 4156. 4156 is about doing software engineering, and 6156 is about improving software engineering including software security. There are no lectures after the first week; students present research papers that are then discussed by the whole class. Active participation is required and students are expected to read the papers scheduled for presentation before attending class. A tentative list of papers is provided on the syllabus, and students can suggest others. Students choose their own forward-looking topics, with instructor approval. Most recent students have studied static/dynamic program analysis, either source level or binary/bytecode, and/or software testing to detect logic bugs, performance bugs, security vulnerabilities, or malware. Some chose to investigate ML/NLP techniques for solving SE/security problems. Besides readings, presentations and discussions, the workload consists of a midterm paper and final project. Midterm papers review recent literature in the student's chosen topic. Final projects build a novel tool or demonstrate a novel technique. Both midterm papers and final projects should include empirical experiments and/or user studies. Students may optionally organize teams (of any reasonable size) for the final project but midterm papers must be written individually. Grading 0% "Homework 0" (required for admission to the class but not considered in grading) 40% Midterm Paper 40% Final Project 20% Presentations and Live Discussion There is no textbook and no exams. All readings will be publicly available, available with uni login through Columbia libraries, or posted in Courseworks Files. Every student will give at least two presentations to the class plus demo their final project. Attendance It is not possible to participate in the class without attending.