This course introduces the basic concepts and modern tools and techniques of software engineering, and prepares you for a software engineer job at modern tech companies, from FAANG to early-stage startups, in the age of AI. It emphasizes the development of reliable and maintainable software via system requirements and specifications, software methodologies including analysis, design, implementation, integration, and testing, software project management, life-cycle documentation, software maintenance, and consideration of human factor issues. We build these skills mainly through practice: working in a team on a semester-long project of your own choosing in the blockchain domain, carried through its complete lifecycle: analysis, design, implement, test, improve, and release, checked at six milestones along the way. Alongside the project, lectures and student-led presentations cover the practices that matter most today, including using AI coding tools responsibly, so you leave this course able to build real software and explain your decisions to a team.
• Class: TR, 3:30-4:50 PM, HARRIMAN HLL 116
• Office Hours: T, 12:00-2:00 PM, NCS 368
For CSE majors, completion of CSE 316 is required to enroll in this course, and you are expected to have senior standing (U4 in Stony Brook's academic guidelines); informally, to be almost ready to become a software engineer. CSE 305, CSE 333, CSE 336, CSE 337, and CSE 356 are not required but provide useful background; depending on how many of these you've completed, you may need to spend extra time on the course project picking up the related database technologies, user interface principles, and programming languages.
You should already be comfortable with different types of programming languages, for example, a scripting language such as JavaScript, and a strongly typed language with garbage collection (Java) or without (C/C++). This course expects you to be able to pick up new languages of these types and complete simple tasks using online resources without extra tutoring, which is a common expectation for working software engineers. No specific systems background is required; the projects may look like a "systems" project to some, but we don't assume you already have that knowledge, nor that you'll learn it entirely on your own; we'll cover the related concepts in lecture.
• Course Project delivered in 6 phases:
Milestone 1: Proposal and Requirements [Deadline: 09/19]
Milestone 2: Design and Setup [Deadline: 10/03]
Milestone 3: MVP [Deadline: 10/24]
Milestone 4: Feature-Complete [Deadline: 11/07]
Milestone 5: Testing and Integration [Deadline: 11/21]
Milestone 6: Final Product [Deadline: 12/05]
■ 80% (10%, 10%, 10%, 10%, 10%, 30%)
• Class Presentation (performed by the group):
■ 20%
Please take a moment to thoroughly read course syllabus, which contains important information about the course structure, project requirements, presentations, and more.
| Date | Topic | Resources and Readings | Slides | Notes |
|---|---|---|---|---|
| 08/25 | Lecture: Course Introduction | slides | ||
| 08/27 | Lecture: Blockchain Fundamentals |
(1) Bitcoin: A Peer-to-Peer Electronic Cash System?
(2) Database and Distributed Computing Foundations of Blockchains (3) Bitcoin and Cryptocurrency Technologies |
slides | |
| 09/01 | Lecture: Software Engineering in the Age of AI |
(1) What do professional software developers need to know to succeed in an age of Artificial Intelligence?
(2) Software Engineering by and for Humans in an AI Era |
slides | asynchronous |
| 09/03 | Lecture: Software Development Methodologies | slides | asynchronous | |
| 09/08 | Lecture: Software Modeling and UML Diagrams | slides | ||
| 09/10 | Lecture: Requirements Engineering and User Stories | slides | ||
| 09/15 | Milestone 1: Project Proposal and Requirements | |||
| 09/17 | Milestone 1: Project Proposal and Requirements | |||
| 09/22 | Presentation 1: Project Management Tools and Practices | slides | ||
| 09/24 | Presentation 2: Software Architecture and Design Patterns | slides | ||
| 09/29 | Milestone 2: Design and Setup | |||
| 10/01 | Milestone 2: Design and Setup | |||
| 10/06 | Presentation 3: Prompt Engineering and AI-Assisted Development | slides | ||
| 10/08 | Presentation 4: API Design and Documentation | slides | ||
| 10/13 | No Class (Fall Break) | |||
| 10/15 | Presentation 5: CI/CD and DevOps | slides | ||
| 10/20 | Milestone 3: MVP | |||
| 10/22 | Milestone 3: MVP | |||
| 10/27 | Presentation 6: Software Testing | slides | ||
| 10/29 | Presentation 7: Debugging and Observability | slides | ||
| 11/03 | Milestone 4: Feature-Complete | |||
| 11/05 | Milestone 4: Feature-Complete | |||
| 11/10 | Presentation 8: Software Security and Secure Coding Practices | slides | ||
| 11/12 | Presentation 9: Software Maintenance, Technical Debt and Refactoring | slides | ||
| 11/17 | Milestone 5 Review: Testing and Integration | |||
| 11/19 | Milestone 5 Review: Testing and Integration | |||
| 11/24 | Presentation 10: Responsible and Ethical Tech | slides | ||
| 11/26 | No Class (Thanksgiving) | |||
| 12/01 | Milestone 6: Final Demo | |||
| 12/03 | Milestone 6: Final Demo |
If you have a physical, psychological, medical, or learning disability that may impact your course work, please contact the Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at sasc@stonybrook.edu. They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty are required to report any suspected instances of academic dishonesty to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at http://www.stonybrook.edu/commcms/academic_integrity/index.html.
Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.