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 11:00am-11:50am Mosaic Hall 0114 [podcast link

LAB:   Monday 12:00-2:50pm, CSE Basement, rooms B230, B240, and B260

              Monday 3:00-5:50pm, CSE Basement, rooms B230 and B240

DISCUSSION:  [podcast link]

       Tuesday 8:00pm-8:50pm    Mosaic Hall 0113   

FINAL:     Tuesday, December 12th, 11:30am - 2:30pm  (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, subject to change before 9/29, 11am]:

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.

We also post important announcements to the Fall 2023 CSE 110 Piazza Forums.  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.  Assignments, lecture slides, etc. will be posted to the course's Canvas [at canvas.ucsd.edu].  You are responsible for all the content there.

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.

Please see the Team page tab for additional information about communicating with the CSE 110 staff.

Textbooks, Canvas and other Resources

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 (on campus or via the UCSD VPN), 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 Freeman, Kathy Sierra, Bert Bates: Head First Design Patterns, O'Reilly Media, 2004 [online]

Recommended Class Texts

[AND] Dawn Griffiths and David Griffiths.  Head First Android Development, 3rd Edition, O'Reilly Media, 2022. [online]
              (The 2nd Edition may be fine, but Android changes fast.)

[JIAN] Benjamin Evans and David Flanagan: Java in a Nutshell, 7th edition, O'Reilly, 2018 [online] (this is a great reference book, but if you have another, that's OK)

David Flanagan: Java Examples in a Nutshell, third edition, O'Reilly Media, 2004 [online]

Y. Daniel Liang, Introduction to Java Programming and Data Structures, Comprehensive Version (12th Edition), 2019.  (any Java textbook is fine)