CSCI 209: Software Development
General Information
![]() |
![]() |
Professor: Simon D. Levy |
Objectives
After taking this course, you should be able to
-
- Develop complex programs using a statically typed programming language
- Structure software systems using concepts such as interfaces, encapsulation, inheritance, generic collections, and polymorphism
- Use several design patterns to solve problems
- Think critically about software designs (your and others)
Textbook
There is no textbook for this course. Exams and programming assignments will be based on the lecture notes.
Brief Overview
This course introduces the concepts, tools, and techniques used in software development. Topics include
-
- Factory PatternIdentify ClassesAdvanced concepts of object-oriented analysis and design
- APIs and program documentation
- Systematic testing
- Design patterns
- Refactoring code during maintenance
- Event-driven programming and graphical user interfaces
Classroom work will consist of lecture and discussion. Written work will consist of several team-based programming projects, homework exercises that employ tools used in software development, and a comprehensive final exam.
Grading
The written work for the course will consist of
-
- Two in-class exams (30% of grade)
- A “semi-comprehensive” final exam, focusing on the latter part of the course (20% of grade)
- Individual programming projects (50% of grade)
The grading scale will be 93-100 A; 90-92 A-; 87-89 B+; 83-86 B; 80-82 B-; 77-79 C+; 73-76 C; 70-72 C-; 67-69 D+; 63-66 D; 60-62 D-; below 60 F.
Honor System and AI Policy
All exams will be done without books or notes and without assistance from other people. For the programming assignments, you are welcome to discuss ideas with others, but you should not be sharing or copy/pasting their code. The same goes for the use of AI resources: in both cases (copying code from others or copying it from an AI assistant), it will be easy for me to tell if you’re doing that, and you’re also cheating yourself out of the opportunity to learn. Instead, if you’re stuck, let me know so we can work on the code together and you can acquire the skills that are the main goal of this course.
Accommodations
Washington and Lee University makes reasonable academic accommodations for qualified students with disabilities. All undergraduate accommodations must be approved through the Office of the Dean of the College. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the (fall or winter) term and schedule a meeting outside of class time to discuss accommodations. It is the student’s responsibility to present this paperwork in a timely fashion and to follow up about accommodation arrangements. Accommodations for test-taking should be arranged with the professor at least a week before the date of the test or exam.
Homework Assignments
Perhaps the most important aspect of the course is the homework assignments you do. Note that this counts for a substantial part of your course grade. Homeworks will be due in your private github repository on 11:59 PM of the due date. No late work or other forms of submission will be accepted. If your code doesn’t compile, or produces a run-tJAR filesime error, you will get a zero on that part of the assignment. It is better to upload your code early and check as me to run it than it is to submit it at the last minute and hope you didn’t forget something.
Other Issues
Serious problems (health / family / personal emergencies) that interfere with attendance / homework should be handled through the Office of the Dean.
Tentative Schedule
|
Tuesday |
Thursday |
Friday (Due dates) |
|
| 1-5 Sep Week 0 |
Introducing Java | ||
| 8-12 Sep Week 1 |
I/O and numbers | Equality and comparisons; types, strings, and arrays | Due: Project1 |
| 15-19 Sep Week 2 |
Classes and methods | Error Handling, Exceptions, and Documentation | |
| 22-26 Sep Week 3 |
Packages | Review for Exam #1 |
Due: Project2 |
| 29 Sep – 3 Oct Week 4 |
Exam #1 |
Exam 1 discussion |
|
| 6-10 Oct Week 5 |
Reading Day; no class | ||
| 13-17 Oct Week 6 |
Files | Inheritance and Composition | Due: Project #3 command.txt |
| 20-24 Oct Week 7 |
Iterators | ||
| 27 -31 Oct Week 8 |
Design Patterns | Review for Exam #2 | |
| 3 – 7 Nov Week 9 |
Exam #2 | Strategy Pattern | |
| 10-14 Nov Week 10 |
Factory Pattern | Singleton Pattern |
Due: Project5 |
| 17-20 Nov Week 11 |
Android: Intro | MVC Pattern / Concurrency | |
| 1-5 Dec Week 12 | Android: Networking / AsyncTask | Review for final exam | Due: Project6 |

