This message is for Fall 2024 COMS W4156 Advanced Software Engineering. 4156 is taught on zoom, do not go to the classroom. The zoom link will be posted in courseworks. (Right now its set to https://columbiauniversity.zoom.us/j/99460890980, but sometimes it changes before classes start.) Attendance at the "live" online zoom sessions is required; watching the recordings does not count for attendance or class participation for on-campus students. CVN students are welcome and encouraged to attend the zoom sessions "live", but there is an alternative CVN-only assignment in courseworks for when they cannot make it. The 4156 background checklist follows below and is also posted at http://www.cs.columbia.edu/~kaiser/4156-background-checklist.Fall2024.txt. Please read the checklist carefully and then answer one of the two questions at the end. After enrollment is full, students who have responded will be admitted in the order of their responses as slots becomes available. Students who never respond will never be admitted. =========================================================================== REQUIRED If there is anything on the required part of this checklist that will not apply to you before the first day of class, then you are not prepared to take this course and should drop the course. Exceptions and special arrangements may be made for MS or PhD "Bridge" students, contact the instructor if this applies to you at kaiser+4156@cs.columbia.edu (please do not omit +4156 or I may never see your message). At least two years programming experience (in any mainstream language). Fluent in either Java or C/C++. preferably both. Completed COMS W3157 Advanced Programming or equivalent. Taking AP or equivalent concurrently is not sufficient. A recent 3157 syllabus is posted at https://cs3157.github.io/www/2024-1/syllabus.html. Comfortable using both CLI (command line interface) and GUI (graphical user interface). Maintain your own personal codebase(s) on github or similar version control repository. Adept at searching for and reading (or watching) documentation and tutorials for software development tools, frameworks, APIs, libraries, etc. on your own, without instruction or assistance from the teaching staff. =========================================================================== IDEAL In addition to the above REQUIRED list, experience with the following constitutes ideal background but is not required preparation for the course. You will have experience with all of these *after* completing the course. Build tool / package manager. Code editor or IDE. Reading and writing key-value, nosql, sql, or any other kind of queryable and persistent datastore on disk. Understand the difference between an "app" and an "API" (Application Programming Interface). Using a local API (library) accessed within the same process, beyond just I/O, strings, math. Using a remote API (service) accessed over the Internet. ============================================================================ ADVANCED - closed ============================================================================ If you have at least the required background and you still want to take the course, please send email responding to one of the two questions below to kaiser+4156@cs.columbia.edu (remember to include +4156 or I'll probably never see your message). Students who do not respond will languish on the waitlist. If you are a current or former Columbia or Barnard undergraduate, please tell me which semester you took 3157 and what was your grade. If you are not a current/former Columbia/Barnard undergraduate, please describe how you learned Java or C++ (either one, both is fine too of course) and under what circumstances have you used it since then (e.g., academic coursework, software engineering internship or employment, hackathons, etc.). Please include your resume.