CS347 Advanced Software Design Monday, 31 March 2025 https://cs.carleton.edu/faculty/jondich/courses/cs347_s25/ + Hi - Jeff Ondich; call me Jeff; Olin 301A - Office Hours info linked on the top of the course web page - Talk to me: in person, Slack #general, Slack DM, email + Goals - Increase your independence as a developer - Think about understanding vs. instruction-following (and why you want understanding) - Practice building something non-trivial - Design and implement for an audience, reasoning ethically about context & consequences of what you build - Put professional tools and processes to use - Explore the question of how a developer should be thinking about and using LLMs. + Other notes - This is a 300-level class - YOU SHOULD ASK A LOT OF QUESTIONS! Do not be shy about this. - Probably want to bring your laptop to class. + Phases - Phase 1 [~2 weeks]: project plan + core tools exploration (notably, Unix basics, git, and docker) - Phase 2 [~5 weeks]: project development + more tools for development infrastructure (e.g., continuous integration, automated testing, etc.) - Phase 3 [~2 weeks]: project refinement; future/professionalism/... + Start-up questions - What would you like to learn this term? C++ Rust An app that runs natively Mobile app Memory: Ruben & Lazuli have some weird idea Docker: WTF Web frameworks: React, React Native, Vue, Ruby on Rails, Angular,... Firmware Networking stuff - What would you like to have a chance to practice? - Start brainstorming software you might like to make - needs your communities have - software you'd like for your own use - existing software you would like to mimic - whatever - at this stage, don't filter; just write everything down + Lab: git + Assignments - submit the git lab - submit a list of answers to the first two questions above - do the partner survey - [get your setup: Unix command line, docker installed, GitHub account + personal access token]