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. This course will cover a lot of material and will require a lot of hands-on and collaborative activities. Missing classes will set you back with regards to those collaborative activities. There are very few reasons that would qualify as an excuse for an absence. If you have known conflicts discuss them with me during the first week of classes.
You will be expected to work with your classmates at prescribed times outside of the scheduled class times. We will work to find some common schedule that can work for everyone. The out-of-class time commitment for a 4-credit course is 4 * 2 * 50 = 400 minutes a week, or about 6.5 hours a week. You should expect to spend close to that amount of time for this class, and time working on the project will be a part of it.
There will be three exams tentatively scheduled for: Friday 10/4, Friday 11/8 and during exam week.
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. 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% |