CSE 110 Software Engineering
Welcome to CSE 110 Software Engineering! We love building great software, and want to help you become great software engineers.
This website is divided into many sections (pages), accessible from the drop-down at the upper-right.
Class Meetings
LECTURE : MWF 1:00p-1:50p Pepper Canyon Hall 106 [podcast link]
Clicker frequency code is CA
LAB: Monday 2:00-4:50pm, CSE Basement, rooms B230, and B240, and B250
All students are welcome at all above lab hours.
Come any time and go any time
The Lab can be performed remotely
Lab must be checked off by end of office/lab hours on Friday (check Course Calendar)
DISCUSSION: [podcast link]
M 5:00p-5:50p FAH 1101
Tu 7:00p-7:50p FAH 1450
You can attend any discussion section, and you can attend multiple discussions per week. Content will be roughly the same throughout the week. See attendance policy for details.
FINAL: Friday, March 22nd, 11:30am - 2:29pm (Location TBD, see Canvas and Piazza for details)
OFFICE HOURS: Please see "Team" page for details.
Course Description
The timely construction of a quality software system that meets a customer's needs, is challenging. In this course you will get an introduction to team-based software engineering and development methods, including specification, design, implementation, testing, and software process. The course emphasizes team development, agile methods, software design, and use of tools such as IDE's, version control, test harnesses, and continuous integration.
Course Requirements and Grading
Grading elements [in percent]:
meet the professor [1%]
syllabus quiz [1%]
pre-class reading quizzes [6%]
clicker participation [5%]
quizzes (in-class) [20%]
labs [7%]
project [35%]
final [25% - and you must pass final to pass the course (60% score on final)]
bulletin board participation [extra credit on boundary cases in assigning final grade]
Meet the Professor [MTP]: Meet with the professor for a few minutes in office hours, lab hours, or an appointment slot sometime during the quarter. This is a quick get-to-know-you discussion, and bring a question you have (e.g., about career, major, instructor, or course). This can be during lab hours, office hours, or in some appointment slots we will make available in the course calendar (see Team Page).
Syllabus Quiz: This class is not like other courses and has a lot of moving parts, so it is critical to your success that you understand the syllabus (i.e., this web site) and the Day 1 lecture. This online quiz is during week 1.
Pre-Class Reading Quizzes: You are expected to do the reading assigned for each class period, in advance. (No reading will be assigned on in-class quiz days.) Before each class, there will be a basic online quiz to check your preparation for class. Before each class, there will be a basic online quiz to check your preparation for class. You can take a quiz up to a 1/2 hour before class starts. There will be a total of 20 reading quizzes, approximately.
Clicker Participation: Your clicker grade is the percentage of clicker questions in which you participate. Full participation means responding to 80% of the clicker questions during the quarter. Answering 80% of all the clicker questions will receive 100% credit for clicker participation. We will also record your participation in problem-solving during in-person Discussion sections as points that can offset missed clicks in Lecture. There isn't bonus credit for answering extra questions in Discussion. Should lecture ever be remote (Zoom), we will use Piazza polling instead of clickers.
Quizzes: There will be 4 in-class quizzes. The quizzes are in essence a midterm spread out over several weeks. The in-class quizzes will be given every other Wednesday starting in week 3, in class. This gives you a week-by-week measure of how you are learning in the course, avoiding a costly surprise mid-quarter. A quiz may be rescheduled to another day due to extraordinary circumstances - campus closure, technology failure, etc. You are responsible for attending the quiz no matter what day it is actually offered. Some of the points lost on an in-person quiz can be earned back by doing better on a paired (similar) question on the final. These points will be restored automatically after the final is graded.
Labs: There will be several (probably 7) labs throughout the quarter. Labs are performed in pairs. Labs are graded pass/fail (1/0), and are checked off by a TA face-to-face in lab (or possibly on Zoom). If you cannot make the lab time, or need more time than a couple hours to finish, you can complete the lab anytime before the end of the last lab hour of the week. Note that if too many students wait until the last lab hour of the week to get checked off, the TA/Tutor(s) may not have enough time to check everyone off.
Project: The project concerns constructing an Android application in two phases (each ending in a milestone) throughout the quarter. You do not need to have an Android device (but one can be bought cheaply, used). The application will be run (and tested) inside an Android emulator. Each phase will be worth the same amount. Grading will be based on your application's run-time behavior, plus other project considerations (e.g., test cases, design, teamwork, etc.). We will require that some design-based work products be turned in prior to the end of each phase, which is when the code product is due. The project will start at the beginning of week 3, once we have a few key readings, lectures, and labs under our belts. There will be major project deadlines near the end of the 4th, 6th, 8th, and 10th weeks of the quarter. It is strongly recommended that you not plan travel during the weekend before a major project deadline.
Requirement to follow Canvas, Piazza Forum, and UCSD E-Mail
Occasionally we may need to contact you regarding your homework or some pressing matter. We may use Piazza, and perhaps additionally e-mail. When we use e-mail, we will use your official UCSD e-mail address, as registered in TritonLink. You are responsible for reading course-related e-mails sent to your UCSD account in a timely manner, at least once a day.
We also post important announcements to the Winter 2024 CSE 110 Piazza Forum. You should check Piazza at least once a day. You are responsible for keeping yourself subscribed to these forums so that you automatically receive forum posts as an e-mail. Note that there is a mobile client for Piazza. Use the "Unread" and "Updated" filters to speed your reading. On the web, these are at the upper left. On mobile, these are accessed at the upper right via the "kebab" menu (three vertical dots). In short, although we will often make announcements at the beginning of class for important matters, we don't have time to announce every significant course event, and Piazza serves as an official place for us to keep the class up to date.
Assignments, lecture slides, etc. will be posted to the course's Canvas [at canvas.ucsd.edu]. You are responsible for all the content there.
Please see the Team page tab for additional information about communicating with the CSE 110 staff.
Textbooks, iClickers, and other Resources
We will be using iClickers fairly extensively in the classroom, and they are a graded element of the course. The bookstore has these in stock. If you have an older iclicker, that's OK. You don't need the newer model.
Canvas will maintain the weekly calendar of activities and the resources that go with them, including project resources. It also hosts online quizzes and grades. We will not always post on Piazza when something is added there, as many additions are regular and frequent (e.g., reading quizzes, lecture slides).
All of the required texts and most of the recommended texts are available online (via SSO login), up to only 20 readers at a time (so buy the books!). You should buy the first two required texts (HFSD and HFDP); these will be great references in the future, as well. The acronym tags listed in front of the readings below will be used to assign readings, which are required to be completed before class. From time to time we may also assign a web resource or video to watch.
NOTE: Page numbers may vary between paper and digital versions. Unless otherwise indicated, page numbers are from the paper edition. Please use Chapter and Section names to disambiguate as necessary.
Mandatory Class Texts
[HFSD] Dan Pilone, Russell Miles: Head First Software Development, O'Reilly Media, 2007 (or 2008 or 2009) [online]
[HFDP] Eric Freeman, Elisabeth Robson, Kathy Sierra, Bert Bates: Head First Design Patterns, 2nd Edition, O'Reilly Media, 2020. [online]
If something seems off with the page numbers, check out the older 1st edition. [online]
Recommended Class Texts
[AND] Dawn Griffiths and David Griffiths. Head First Android Development, 2nd Edition, O'Reilly Media, 2017. [online]
However, you may find the more up-to-date 2022 3rd edition to be useful, even though it uses the (Java-like) Kotlin language [online]
[JIAN] Benjamin Evans, Jason Clark, and David Flanagan: Java in a Nutshell, 8th edition, O'Reilly, 2018 [online] (this is a great reference book, but if you have another, that's OK)
[JENS] David Flanagan: Java Examples in a Nutshell, third edition, O'Reilly Media, 2004 [online]
[IJPDS] Y. Daniel Liang, Introduction to Java Programming and Data Structures, Comprehensive Version (12th Edition), 2019. (any Java textbook is fine)