CSE 110 Software Engineering

Welcome to CSE 110 Software Engineering!  We love building great software, and want to help you become the great software engineers.

Class Meetings

LECTURE:     Tuesday-Thursday 5:00 - 6:20pm, Center Hall 119 [podcast]

LAB:             Wednesday 11:00am-1:00pm, CSE Basement, rooms B230, B240, B250
                   (extended lab period is 10am-2pm, and staff will be available)

DISCUSSION: Wednesday 3:00 - 3:50pm, York 2622

FINAL:          Thursday, March 21st, 7:00-10:00pm


Course Description

The construction of good software systems is challenging. In this course you will get an introduction to software development and engineering methods, including specification, design, implementation, testing, and process.  There is an emphasis on team development, agile methods, and use of tools such as IDE's, version control, and test harnesses.

Course Requirements and Grading

  • Grading elements [in percent]:
    • reading quizzes [5%]
    • clicker participation [5%]
    • quizzes [10%]
    • labs [10%]
    • project [35%]
    • final [35%]

  • Pre-Class Reading Quizzes:  You are expected to do the reading assigned for each class period, in advance.  Before each class, there will be a simple online quiz to measure your preparation for class.  We will drop the lowest 3 reading quizzes.  You can take the quiz up to a 1/2 hour before class starts.
  • Clicker Participation: Your clicker grade is the proportion of the number of clicker questions in which you participate.  We will drop 20% of non-participations.  That is, someone who participates in 80% of the clicker questions will receive 100% credit for clicker participation.  There will be no extra credit [see: wikipedia, youtube], although sincere participation is shown to increase course performance.

  • Quizzes:  There will be 6 quizzes throughout the quarter.  Most quizzes will be given every second Tuesday (even-numbered weeks in Moodle), in class.  There is also a required quiz in week 1 regarding the mechanics of the course.  This quiz is online.  Your lowest quiz will be dropped.  The quizzes are in essence a midterm spread out over several weeks.  This gives you a week-by-week measure of how you are learning in the course, avoiding  a costly surprise mid-quarter.

  • Labs: There will be several labs throughout the quarter.  Labs are graded pass/fail (100/0).  If you cannot make the lab time, or need more time than 2 hours, you can complete the lab anytime before the next lab time (11am of the following week).  Note also that we have extended the lab time by +/- one hour to provide more flexibility and contact time with the team.
  • Project:  The project concerns constructing an Android application in a few phases (each ending in a milestone) throughout the quarter.  You do not need to have an Android phone.  The application will be run (and tested) inside an Android emulator.  Each phase will be worth the same amount.  For example, if there are four milestones, then each milestone will be worth 40/4 = 10%.  Grading will be based on your application's run-time behavior, plus other project considerations (e.g., test cases, design, teamwork, etc.).  We may require that some design-based work products be turned in prior to code being turned in (essentially comprising two milestones for one phase).  The project will start a few weeks into the quarter, once we have a few key readings, lectures, and labs under our belts.

UCSD E-Mail and Moodle Forum Requirement

Occasionally we may need to contact you regarding your homework or some pressing matter.  We may use e-mail, and when we do, 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 Winter 2013 CSE 110 Moodle Forums.  Your will be subscribed to these forums so that you automatically receive forum posts as an e-mail.  In some forums you can turn this feature off, but you are still responsible for all content on the Moodle.

Please see the Contact 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.

All of the required texts and most of the recommended texts are available online (on campus or via the UCSD web proxy), up to 20 readers at a time.  While this number of licenses has been adequate in the past, this quarter the number of students enrolled is quite large.  You may want to 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.

Mandatory Class Texts

[HFSD] Dan Pilone, Russell Miles: Head First Software Development, O'Reilly Media, 2007 [online]

[HFDP] Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates: Head First Design Patterns, O'Reilly Media, 2004 [online]

[HFOAD] Brett D. McLaughlin, Gary Pollice, David West: Head First Object-Oriented Analysis & Design, O'Reilly Media, 2006 [online]

Recommended Class Texts

[AND] Zigurd Mednieks, Laird Dornin, G. Blake Meike, and Masumi Nakamura:  Programming Android: Java Programming for the New Generation of Mobile Devices, 2nd edition, O'Reilly Media, 2012. [online]

[SVN] C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick: Version Control with Subversion, O'Reilly Media, 2008 [online]

[UML2] Dan Pilone, Neil Pitman: UML 2.0 in a Nutshell, first edition, O'Reilly Media, 2005 [online]

[JIAN] David Flanagan: Java in a Nutshell, fifth edition, O'Reilly, 2005  [online] (this is a great reference book, but if you have another, that's OK)

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

Walter Savitch: Absolute Java, fifth edition, Addison-Wesley, 2012  (any Java textbook will do, however)

Academic Integrity

You are to do your own work in this course.   Each student is responsible for knowing and abiding by UCSD's policies on Academic Dishonesty and on Student Conduct. Any student violating UCSD's UCSD Academic Integrity Policy will be reported to the Academic Integrity Office for administrative processing, and may result in suspension or dismissal from UCSD, as well an an academic sanction that could result in failing the course (e.g., a grade of zero (0) on a compromised assignment).  Committing acts that violate the UCSD Student Conduct Code that result in course disruption will be referred to the Office of Student Conduct, and could result in suspension or dismissal.

As a clarification of the UCSD Academic Integrity Policy as it applies to the work in this course, note the following:

  • No student shall provide their assignments, in part or in total, to any other student in current or future classes of this course. No student shall procure or accept assignments from any other student from current or prior classes of this course.

  • All programming code and documentation submitted for evaluation or existing inside the student's computer accounts must be the student's original work or material specifically authorized by the instructor. The course accounts are authorized for course work only.

  • Collaborating with other students to develop, complete or correct course work is limited to activities explicitly authorized by the Instructor. Use of other student's course work, in part or in total, to develop, complete or correct course work is unauthorized. However, students may freely discuss their work with others.

  • Each student must retain intermediate work as proof that submitted work is his or her own. A student may be asked to provide these intermediate copies as evidence that the submitted work is the student's.