Course FAQ

This FAQ answers questions not explicitly addressed elsewhere on this site.

Course Structure

Q: How hard is this class?  I'm signed up for 16 units and worried that I won't have enough time.

A: It depends.  We'd say that if you are signed up for another "hard" CSE class, then you should limit yourself to 12 units.  Students report spending an average of 8-10 hours a week on the class (outside of lecture), but there can be a lot of work around the project deadlines (weeks 6 and 10).  If you are not comfortable with Java, you may spend more time on the course than average.  Because there are quizzes (for MWF) instead of a midterm, that helps spread the effort out.  You also need some flexibility in your schedule for team meetings.  Don't cut corners by skipping discussion section, though.  We do real-world practice problems there, and problems like these show up on the final (and quizzes).  If you can't make discussion section, make sure to follow the podcast and work the posted problems.

Q: Why do we do clickers and exercises in class?  I can learn by listening.

A: Listening may be enough for memorizing facts, but not for acquiring a skill.  Humans learn skills by doing -- practicing.  You won't learn to play a musical instrument, perform a sport, drive a car, how to cook, etc., just by listening or watching.  Software engineering is the same.  This pertains not just to learning the skill, but sometimes even comprehension of facts, because the issues are so complex.  Using clickers can help expose a misunderstanding before it becomes a permanent part of your memory.  Additionally, a key part of software engineering is discussion and debate of technical issues.  Thus, even if you do have the comprehension and skill of the knowledge being taught at the moment, you'll still benefit from the practice in communicating with others about it, and convincing others of your point of view, supported by evidence.  No matter how good you are, there's always room to improve.  Thus, with every clicker question, we are practicing two things: the skill of the content at hand, and the skill of productive discussion and debate.  By the way, we also do exercises (work problems) in discussion section.  Same reason: read it once, watch it once, do it 10 times or more.

Question: Why does CSE 110 have quizzes instead of a midterm?

Answer: In the past, when we offered a midterm, many students failed it, making it impossible for them to finish with an A in the course.  I couldn't drop the midterm, because it was the only personal assessment during the course.  In the spirit of Agile, quizzes provide early and frequent feedback on your learning, allowing for timely adjustments.  We perform a 100% substitution of your two lowest Quiz question grades with the grades from matched questions on the Final exam (if they are higher!) so that there is no penalty for that early feedback.  For the remaining Quiz questions, we perform a 50% substitution from matched questions on the Final (if they are higher).  Please see the Quiz Grade Substitution page for details.

Q: What's with all the pictures and storytelling in the Head First books?

A: The textbooks in software engineering are really dry, and tend to be encyclopedic, providing way too much information.  The Head First books are focused, entertaining, and offer the best content we've been able to find.  The pictures and storytelling are designed to increase comprehension.  Cognitive scientists have found that we are visual, storytelling beings.  For example, they found that if I give you a math problem in the form of a story, you'll be more likely to solve it correctly than if it were presented in a straight mathematical form.  In other words, don't skip the pictures and stories!  The book's style is also directed at correcting misconceptions, e.g. the Q&A's.  Bill taught himself statistics a couple summers ago by reading Head First Statistics.

Q: I haven't programmed in Java in a while.  Should I be concerned?

A: If you recently took CSE 100 (which uses C++), you'll be fine.  C++ and Java share a lot of concepts and syntax.  We've put up some review materials on Canvas and a reading list on the syllabus.  A little effort will help get the rust off.

Labs

Q: I have a conflict for the lab time.  Can I do the lab another time?

A: Yes, in fact, we run an open lab for three hours, and you can attend any portion you want.  You can even work on the Lab during the week and have it checked off by anyone on the instructor team.  There are hybrid options as well.  Each Lab is due by Friday, end of office/lab hours.

Q: Do I have to do the Lab with a partner?  I work better alone.

A: Yes, you have to work with a partner, but you can work with anyone you want.  By working with a partner, you can often quickly solve problems by helping each other (rather than staying stuck or asking us for help), and we have half as many labs to check off.  Note that working in pairs is actually an example of the Agile principle of rapid feedback, and working others effectively is a critical engineering skill.  Also, a few Labs require the tool's team capabilities be used, which requires...a purported teammate.

Q: Can we submit our lab online?

A: We do face-to-face check-offs because there are often small problems or omissions that can be worked out on the spot.  We also have a short verbal quiz which is better done face-to-face for similar reasons.  We offer loads of lab/office hours between Lab Day and Friday, some in hybrid mode, to make it easy to check off.

Project

Q: Can we do our own project?

A: All teams do the same project.  There are many reasons.  First, the primary skill of software engineering is building software according to a non-technical customer's requirements, not your own.  That's why we get paid the big bucks.  (Doing your own project is very much a business skill, so check out the minors offered by the Rady School.)  Additionally, finding customers for many different projects, managing all those different customers--team interactions, and grading all those different projects would take time and resources that we don't have.  Having (much) larger project teams would allow for fewer projects, but larger teams are much harder to manage and usually result in many teammates not participating, causing anger and hard feelings.  Standardizing the project also lets us customize the Labs to that project.  On the other hand, we do give you wide liberties with your user interface design and software design, among other things.

Q: Can we assemble our own teams?

A: Yes, in part.  You can propose up to half of your final team, and the instructional team will pair you with the other half.  This ensures a realistic team experience (you won't be working only with your best friends in industry!), but still having some familiar faces.  Watch for a post on the discussion board and follow the directions carefully.  You must participate in the group formation process, even if you don't want to propose to be part of a team.

Q: Can we make our project public on GitHub after the quarter is over?

A: Yes.  We define a new project every quarter, so there's no problem in putting yours out there, after the quarter is over.