Instructor: Prof. Maged Elaasar
Lecture: MW 4PM to 5:50PM (Perloff Hall 1102 or Zoom)
1A TA: Steven Gong
Lab 1A: F 2:00PM to 3:50PM (Dodd Hall 121 or Zoom)
1B TA: Patricia Xiao
Lab 1B: F 12:00PM to 1:50PM (Franz Hall 1178 or Zoom)
This course is at the intersection of computer science and engineering. It provides both theory and hands-on experience with the development of large-scale software systems. You will learn systematic methods for large-scale software development including: agile process, software analysis, architecture patterns, design patterns, code generation, unit testing, regression testing, bug finding, code refactoring and DevOps. You will get to practice these methods in the context of a software project developed in collaboration with other students. However, this course will not focus on coding; and students are expected to already have basic knowledge of Java, which will be used for basic coding exercises and to demonstrate coding examples.
In the first lecture, I will ask you to fill out a background survey on your background and what you are hoping to learn. In the second lecture, I will discuss how your expectations are aligned with and/or different from what is to be covered and emphasized in the course.
Participation: 5%
Homework: 20%
Midterm: 20%
Final: 25%
Project: 30%
Date | Topic | Notes |
---|---|---|
M 1/3 | Introduction to Software Engineering | |
W 1/5 | Software Process (Process Models, Scrum Process) | |
F 1/7 | Lab | Project Kickoff |
M 1/10 | Software Analysis 1 (UML Diagrams: Basics) | |
W 1/12 | Software Analysis 2 (UML Diagrams: Digging Deeper) | |
F 1/14 | Lab | Project Part A is due |
M 1/17 | Holiday: Martin Luther King | |
W 1/19 | Software Architecture 1 (Architectural Patterns) | |
F 1/21 | Lab | |
M 1/24 | Software Architecture 2 (Cloud Architectures) | Homework 1 is due |
W 1/26 | Software Design 1 (Creational Patterns) | |
F 1/28 | Lab | |
M 1/31 | Software Design 2 (Structural Patterns) | |
W 2/2 | Software Design 3 (Behavioral Patterns) | |
F 2/4 | Lab | Homework 2 is due |
M 2/7 | Midterm Exam | 4-5:50 pm |
W 2/9 | Software Code Generation (Abstraction, Automation) | |
F 2/11 | Lab | Project Part B is due |
M 2/14 | Software Testing 1 (coverage criteria, white box test, unit test) | |
W 2/16 | Software Testing 2 (symbolic execution, regression test) | |
F 2/18 | Lab | |
M 2/21 | Holiday: Presidents’ Day | |
W 2/23 | Software Code Review (Hoare Logic) | |
F 2/25 | Lab | Homework 3 is due Sun 2/27 midnight |
M 2/28 | Software Evolution & Maintenance (Anti-Patterns, Refactoring) | |
W 3/2 | Software DevOps (Continuous Integration/Delivery/Monitoring) | Guest Lecturer - On Zoom |
F 3/4 | Lab | |
M 3/7 | Final Project Presentations (on Zoom) | Project Part C/D are due |
W 3/9 | Final Project Presentations (on Zoom) ) | Homework 4 is due |
F 3/11 | Final Exam Review Lab | |
M 3/14 | Final Exam | 11:30 am -2:30 pm (in person at Peroff 1102) |
You are expected to attend and participate in all lecture and discussion sessions of this class. Participation will be measured by answering quizzes posted during class on Google forms. You will be allowed to miss up to 10% of the quizzes. This should allow you to address circumstances like being sick, having schedule conflicts, etc. without losing marks. So, plan accordingly, and do not ask your instructor or TA for make ups.
You will be given homeworks in this class with questions that are representative of those you will get on tests. Homework is individual (no team) effort (zero tolerance for collaboration). You should plan to submit them by the due date. Late submission may be allowed with a penalty on some homeworks.
You will write two exams in this class. The first is a Midterm that is given in week 6. The second is a Final that is given in week 11 (the finals week). Exams are always an individual (not team) effort (zero tolerance for any kind of collaboration).
You will practice the software engineering process and methods that you learn in class to develop a software application as an open-source project on Github. The project will be carried by a team of 5-6 students (you will form such a team in the first week).
You will have the opportunity to propose your own unique app idea (web app, mobile app or desktop app) that can be developed in 8 weeks. You will have the freedom to choose a programming language and a technology stack to realize your app. Hence, it would be prudent to choose ones that team members already have expertise with or can manage to learn within this timeframe.
You are expected to showcase your project work incrementally over time through a set of deliverables (shown below). You will also be asked to present those deliverables, as well as provide constructive feedback on other teams’ deliverables.
Your TAs will be in charge of setting expectations for and grading your project deliverables. The focus will be on the quality of following the development process, using the methods taught in class, and justifying/communicating your decisions (not on making the app have the most features, the hottest UI or the trendiest tech stack). Students in the same team may not always receive the same grade, as TAs will consider your individual contribution/effort and your teammates' feedback when giving individual grades.
Part A: Application Concept, Epics, Feasibility, and Technology Stack (3%)
Part B: Application Analysis, Architecture and Design Descriptions (11%)
Part C: Application Realization, Testing, Integration, and Deployment (11%)
Part D: Application Demonstration (Youtube video) and Project Retrospective (5%)
We will be using Bruin Learn as the main platform for posting the lecture and discussion material and making announcements so make sure to check it regularly. We will also use the Zoom platform to run the lecture and discussion sessions in the scheduled times for remote sessions. Those sessions will also be recorded so you can rewatch them at any time. We will be using Gradescope to receive your homework and exam grades. We will also be submitting your project deliverables through it ( one submission per team suffices). We will also be using the Piazza platform for discussions, Q/A and announcements. Finally, we will be using Google Forms for class quizzes and surveys.
At some points, we will be asking you to give feedback on your learning experience using anonymous surveys. It is very important for us to know your reaction to what we are doing in the class, so I encourage you to respond to the surveys, to help us create an environment that is effective for teaching and learning.
Each student is expected to uphold the values of integrity, honesty, trust, fairness, and respect toward peers and community. Violations (e.g., cheating, unpermitted collaboration or use of resources) will absolutely NOT be tolerated. In your first week, you must read and sign UCLA's Academic Integrity Statement and submit it through Gradescope.
- The instructor cannot accommodate individual requests to schedule the Midterm or Final exam on different dates.
- Grades for individual components will not be curved. However, the final grade may get adjusted using a curve before letter grades are assigned.