Software Development is a complicated process. Of course you must write code that solves a problem, but this is only a small part of the work when bringing a software product from initial idea to releasable application. As part of the process, you will invariably have to revisit code written in the past in order to improve it or to fix bugs. You will need to maintain “development” versions of your code along with “production” versions. You will need ways to keep track of bugs in your code as well as proposed enhancements, and you will need to track your progress as you work towards make these changes. Above all, you need will to work with other people’s code, and they will need to work with yours.
This course is a survey and practicum on all of these aspects of software development. It moves on parallel across 5 categories of topics:
Along the way, students are also engaged in a collaborative project that will allow them to reinforce all these concepts while working with their peers on a large-scale project.
There are two main sources of material for the course. The first is the main course textbook, Agile Software Development, Principles, Patterns, and Practices by Robert Martin. This textbook covers the topics of Design Concepts and Principles and Design Patterns.
The second source is a list of electronic resources available to members of the ACM (Association for Computing Machinery). The ACM delivers resources that advance computing as a science and a profession. This includes the ACM Learning Center, which provides access to hundreds of online books and videos related to computing. To access these electronic resources, you will need to purchase an ACM student membership (about $20 per year). The cost of a student membership is modest given the weath of resources it provides access to. We encourage you to continue your membership every year and to take advantage of the opportunities and resources it offers.
A catered list of readings and videos from the ACM Learning Center will be provided. These will cover the remaining topics: Java programming and OOP Fundamentals, Development Practices and Coding Practices. Sections from the following will be covered:
The various resources are organized in two playlists:
In the class schedule page for each class day you will find a list of links to “prep” items. These may be videos to watch or book sections to read, possibly with a short assignment to help you learn the material. You are expected to do this prep work before coming to the next class.
You are expected to attend every class meeting. The accelerated nature of Spring term and the collaborative nature of the team development project require constant engagement with the material and your classmates.
Each class day is typically divided into 5-6 activities. Missing an activity will result in a reduction of your final score by one percentage point, up to a total of 10 points. Emergencies will be dealt with on an individual basis. There are very few reasons that would qualify as an excuse for an absence. If you have known conflicts discuss them with us by the end of the first day.
The class meets for 10am to 5pm with a break for lunch. This is the required amount of time expected of a student for a 1-unit course. You will do most of the work for the class during class time, including all the work on the project.
There will be three midterms: Monday 5/6, Monday 5/13 and Wednesday 5/22.
For a large part of the course you will be engaged in a collaborative project with a group of your classmates. Project work will typically be as follows:
The project will overall count for 45% of the final grade, broken down as follows:
Your phone is required to be in your bag, set to silent, at all times, except during scheduled breaks (there will be at least one 5-minute break every hour). This includes both lecture and other in-class activities as well as programming/development time. If phone use becomes a problem, we will confiscate your phone until the end of the class day.
Similar policy applies to laptops and tablet devices. They are not to be used except during breaks or unless otherwise instructed.
Your final grade depends on class participation, the development project, and three exams, broken down as follows:
Components | Percent |
---|---|
Participation | 10% |
Project (Group) | 30% |
Project (Individual) | 15% |
Exam 1 | 15% |
Exam 2 | 15% |
Exam 3 | 15% |
This gives a number up to 100, which is then converted to a letter grade based roughly on the following correspondence:
Letter grade | Percentage Range |
---|---|
A, A- | 90%-100% |
B+, B, B- | 80%-90% |
C+, C, C- | 70%-80% |
D+, D, D- | 60%-70% |
F | 0%-60% |