CSCI 209: Software Development (Fall 2020)

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 acceptedIf your code doesn’t compile, or produces a run-tJAR filesime error, you will get a zero on that part of the assignmentIt 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

project2.zip

29 Sep – 3 Oct
Week 4
Exam #1

Exam 1 discussion

Collections

 
6-10 Oct
Week 5

Abstract Classes

Iterators

Reading Day; no class  
13-17 Oct
Week 6
Files Inheritance and Composition Due: Project #3 command.txt
20-24 Oct
Week 7

Due: Project #4

project4.zip

Abstract Classes

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

project5.zip

17-20 Nov
Week 11
Android: Intro MVC Pattern / Concurrency  
1-5 Dec                    Week 12 Android: Networking / AsyncTask Review for final  exam Due: Project6