COMP365 - Software Engineering - Spring 2020
- Instructor: Dr. Matthew Lang
- Course website: matthewlang.github.io/comp365
- Email: langm@rhodes.edu
- Schedule: MWF 11:00-11:50am, Briggs 108
- Office hours: See website for office hours; you may also email me to set up a time that works for you.
Course Description and Objectives
The software systems we often find the most useful and magical are also the largest and most complex to build and understand. In order for these systems to be reliable, maintainable, and secure, they must be built according to disciplined and well-founded methods. This course examines these methods—both in the large (defining requirements, system design, architecture patterns, software process, etc.) and in the small (version control, testing, benchmarking, code review, etc.).
This course is broad; we will examine a variety of topics that range from theory to tools. At the end of it, you should understand how real-world software is engineered and should be able to:
- Build sizable software projects according to best practices and methods.
- Explore and understand the architecture of an existing system.
- Design and reason about abstractions in the context of a larger system.
- Effectively use modern software construction tools (IDEs, debuggers, version control systems, profilers, etc.).
- Give and incorporate meaningful feedback from detailed code and design reviews.
- Understand and apply common design and architectural patterns.
- Evaluate the quality of sofware design and implementation.
- Refine requirements for and prioritize/plan a software project.
All of these objectives can be understood at different levels of resolution: from APIs/UIs to components/modules to individual classes.
General course outline (WIP)
Week | Topic |
---|---|
1 | Intro, Rust |
2 | Testing |
3 | Code style/smells, version control, code review |
4 | Classes, modules |
5 | Object-oriented analysis & design (OOA&D) |
6 | Patterns |
7 | Coding process, source code organization |
8 | Comments, logs, and debugging |
9 | Spring break |
10 | Requirements and design |
11 | APIs |
12 | Teams, planning, and risk |
13 | Process |
14 | Ops and lifecycle |
15 | Refactoring, performance |
16 | Quality |
17 | Wrap-up |
Books
Additional readings will be distributed via the course website.
Coursework
Since the goal of this course is for you to be prepared to work on large software projects, a significant amount of the work that you will do for this class will be constructing software.
The Department of Education guidelines for a 4-credit course mandate 12 hours of outside class time spent per course. Beyond doing readings for class and regular, small homework assignments, you are expected to spending most of this 12 hours working on software.
Your work will be divided into two broad categories of tasks:
-
Regular programming assignments: you will be given a set of programming assignment to complete. These labs will require you to design and implement a module or program individually. It is expected that you will spend at least 8-12 hours on these assignments.
These assignments will incorporate process elements from real software construction.
In each, I will give you a loosely-defined set of requirements for a software component/library, and you will design and implement the component (including tests). Requirements will be purposefully loose so that you will have to refine them and have space and freedom in your design.
After you have written down a design “one-pager”, you be asked to give and receive feedback on your design (from me or a peer) and get approval for what you build.
You will give and receive additional peer feedback on your work through code reviews, as well as feedback fom me. On some assignments we will iterate on your solution.
It will be fully-expected that your work is your own. Collaboration is ok, but copying is not. You must own all code you submit. Part of the course will involve reviewing the design and code of your peers; this is impossible if you are not the sole author of your work.
-
Group projects: You will work in small groups on a project or feature. Guidelines for this project are TBD, but you will receive guidance on forming functional teams to undertake non-trivial efforts in constructing quality softare.
Throughout the course we will be using Git and GitHub for versioning both your code and your designs. Your first assignment in the course will be to create a GitHub account.
I will expect that you are making regular progress on your assignments and not waiting until the last minute. Part of your grade will be determined by the frequency and substance of your commits.
Item | Tentative weight |
---|---|
Programming assignments | 40% |
Homework | 20% |
Projects | 40% |
Grades of A–, B–, C–, and D– are guaranteed with final course grades of 90%, 80%, 70%, and 60%, respectively. If your final course grade falls near a letter grade boundary, I may take into account participation, attendance, and/or improvement during the semester.
Expectations
You are expected to spend approximately 12 hours per week on this course (both per Department of Education guidelines as well as my expectations of the work required). This class will involve a lot of work, but you will get a lot out of it; education is transactional.
You may also be expected to interact with an external community. Be mindful that you are representing Rhodes when you do so.
Attendance
You are expected to attend each class. After 3 unexcused absences, I may drop your grade by one letter for each subsequent absence.
Laptop/cell phone policy
I’m not going to ban cell phones or laptops in class (you are adults and I am not your high school teacher)… However, I strongly discourage their use. There are numerous studies that show that laptop use during class not only does not improve learning, but actually detracts–not only for you, but for those around you.
If you have a reason for taking notes on a laptop (e.g., due to disability), I understand and fully support its use. If not, however, I expect that if you choose to use your laptop, you are only taking notes with it.
If you are distracting yourself and those around you by browsing the internet/checking email/etc. you will be asked to not bring your laptop to class anymore. Note that this is also disrespectful to both me and to the class.
You may not wear earbuds during class.
Office hours
Scheduled office hours will be on the course website. Outside of these hours, I am available by appointment. Generally, I will be in my office during the day, and you can feel free to stop by any time–my door is always open!
Academic Integrity
Since collaboration with your colleagues will be an important part of your careers, collaboration is permitted on all graded assignments (with the exception of exams). However, you have to turn in your own copy of each assignment in your own words. Note that “in your own words” is not meant superficially—collaboration is not copying (digital or otherwise). This applies to programming assignments as well. For example, if a homework assignment asks you to provide an argument that a given statement is correct, collaboration means discussing the high level ideas of an argument with a colleague. Copying is transcribing a colleague’s argument (and perhaps changing variable names/words)
Plagiarism, cheating, and similar anti-intellectual behavior are serious violations of academic ethics and will be correspondingly penalized. If you are concerned about a possible violation of this kind, please talk with me. I understand that being a student at Rhodes can be stressful sometimes and you will have many demands on your time. However, I would much rather have you turn in a partially completed assignment or do poorly on a test than have you violate the Rhodes Honor Code. I can, and very much want to, help you if you don’t understand the material, but violations of academic integrity will be dealt with harshly. Unless otherwise specified, everything you submit in this course must be your own work and represent your individual effort.
These are all included in the definition of reportable Honor Code violations for this course: copying all or part of a solution to a problem, downloading a solution from the internet and submitting it as your own, having someone else provide the solution for you, or allowing someone else to copy from you.
If you have any doubt about what type of behavior is acceptable, please talk with me.
Late work
You may turn in work after the deadline for partial credit, with a penalty scale of 8% per day.
Diversity
A diverse learning community is a necessary element of a liberal arts education, for self understanding is dependent upon the understanding of others.We are committed to fostering a community in which diversity is valued and welcomed. To that end any discrimination or harassment on the basis of race, gender, color, age, religion, disability, sexual orientation, gender identity or expression, genetic information, and national or ethnic origin, will not be tolerated in the classroom.
We are committed to providing an open learning environment. Freedom of thought, a civil exchange of ideas, and an appreciation of diverse perspectives are fundamental characteristics of a community that is committed to critical inquiry. To promote such an academic and social environment we expect integrity and honesty in our relationships with each other and openness to learning about and experiencing cultural diversity. We believe that these qualities are crucial to fostering social and intellectual maturity and personal growth.
Intellectual maturity also requires individual struggle with unfamiliar ideas. We recognize that our views and convictions will be challenged, and we expect this challenge to take place in a climate of openmindedness and mutual respect.
Sexual Misconduct Disclosure
I will do my best to help any student who comes to me with non-course-related concerns. Please keep in mind, however, that all faculty are required by policy to share knowledge of sexual assault, dating/domestic violence, sexual exploitation, stalking, sexual harassment and sex/gender discrimination with the Title IX Coordinator, Tiffany Cox. For more information about Rhodes’ sexual misconduct policy or to make a report please see www.rhodes.edu/titleix.
FERPA
Federal law prevents me from discussing your grade in my course with anyone other than you. The Family Educational Rights and Privacy Act (FERPA) has also been strengthened by recent court cases so that it is not permissable to discuss grades via email. If you want to talk about your grade in the course, please talk to me in person.
I reserve the right to alter this syllabus as necessary.