Course Goals and Promise FAQ

I and the entire CSE 110 staff team are excited to bring you the concepts and skills that will enable you to build world-changing software systems.  To helps us get on the same page for the expectations for this course, we answer the a few questions for you below.

Why does this course matter?

Software permeates every aspect of life on this planet.  And virtually all of you will be working with software in the near (and foreseeable) future, either directly as programmers or managers, or indirectly as part of a larger team.  Software engineering is the practice of successfully making software that makes a difference.

What does this course offer to you?

In this course you will gain basic skills in the fundamentals of software engineering.  Building software that others can use is hard.  After this class, you will have the skills to build modestly complex systems with a small team.  We will be using a set of methods that are generally known as Agile Software Development methods, because they allow a programming team to adapt on the fly as issues arise.  Such change comes from customers, the market, advances in technology, and the team's own experience. These skills include the ability to:


Apply the Agile software development process

Develop correct software that customers need

Design software to aid testing, changes to requirements, and developer collaboration

Use tools to improve productivity and quality

Reason, communicate, and problem-solve in the software project milieu

What this course will not be able to do is provide skills in working with users or building very complex systems.  Specifically:

In short, this course gives you a basic foundation in software engineering, suitable for use in student projects in other classes, smaller "start-up" projects, in industry for entry-level positions, and in preparation for advanced coursework in software engineering.

How are you going to accomplish this?

You will be reading best-in-class literature, attending lectures, performing hands-on labs in key topics (mostly tools and technologies), attending discussion sections, and completing a small-team project.  They are designed to work in concert.

Then, in the future, no matter what software project you are working on, you will be able to apply and build on your software engineering knowledge to make you and your project more successful.

How will you (and the CSE 110 team) know if you are making progress in your learning?

You will be getting constant feedback on your learning of each key concept or skill in the course.  First, there is the on-going reading quizzes, clicker questions, and labs.  The project, too, will be broken into two planning phases and milestones, which will give the course team a chance to give you feedback on your project at intermediate points.  Additionally, we will be conducting regular in-class quizzes (in lieu of a midterm), also giving you weekly feedback on your learning. 

You should reflect on each of these experiences each week to determine for yourself if you are making adequate progress – and plan specific changes if you are not.

While working harder will often solve the problem, sometimes working smarter is the better approach, which means doing things like scheduling your preparation for the various activities and assessments and changing how you study. Studying a little bit every day has been shown to be more efficient than cramming, for example.  You should not hesitate to ask for help if you need it - in person or on the discussion forums.  Study groups are also very productive for many students.