Course Syllabus

CS 441 Advanced Programming - Theory and Practice

 

PREREQUISITE:                  CS 335, CS 344, CS 346, CS 365 and Math 325 or consent of instructor.

 

COURSE OBJECTIVES:    

This is your capstone sequence in the Computer Science Department and therefore this course will extend and deepen your understanding of topics previously covered.  Specifically the objectives of this course are to gain an understanding of the theory and practice involved in designing, coding, and testing software.  You will examine and implement advanced data structures, algorithms, design patterns, and programming techniques.  You will understand design tradeoffs, software testing, maintenance and documentation issues, and program execution and memory requirements.  Issues specific to team projects will be introduced.  All these issues will serve as the basis for a major project in CS 442.

 

Instructor:

            Name:                          Joel Henry

Office:                          Social Sciences 411

            Office Hours:                Tues & Thurs 9:30-11:00; Mon & Wed 9-12

            E-mail address: henryj@cs.umt.edu

            Phone:                          243-2218

 

Topics:

1.         Challenges of design, coding, and testing.

2.         Professional programming.

3.         Implementation issues.

4.         Integration and deployment.

5.         Design patterns and pattern implementation.

6.         Software design.

7.         Software testing, maintenance and documentation.

8.         Preparing for a major project.

 

TEXTS:         

REQUIRED:              Design Patterns in C#, Metsker

            Code Complete, McConnell

 

COURSE CONTENT:         

This course continues to evolve each year.  As such, I will be using material from both texts but supplementing course materials heavily from other texts, journal articles, and personal experience.  Course materials from other sources will be given to you, obtained them from the web, or from reserve at the library.  Please note:  You are responsible for all material no matter source.  You may use Java or C++ in this course, but you must implement the design patterns and implementations as required (meaning “I can’t do it in Java” will not excuse you from doing the assignment as instructed.  I have extensive professional computing experience which will influence this course heavily.  You will not find this information in any textbook so COME TO CLASS!

Course Deliverables:

            Tests (3 @ 20% each):             60%

            Assignments (7):                                   40%

 

Grading:   

Grading scale: 59.5 or lower F, 59.6-69.5 D, 69.6-79.5 C, 79.6-89.5 B, 89.6 – 100 A

 

Late Policy:        

Hand in materials:                                                     Presentations:

1 day (24 hours) -        10%                                         No late presentations.

2 days (48 hours) -       30%

3 days (72 hours) -       50%

4 days or more -           No thanks, I don’t want it.

Cheating: 

Plagiarism will be handled harshly, as per the Student Conduct Code.  You may fail the assignment or the course.  MY ADVICE: Take an F rather than cheat.

 

Course Information:           

This course leverages the strengths of the instructor and includes course materials that meet the vision of the instructor.  In short, I asked myself, “What materials would have been most useful me in a capstone course prior to graduation?”  This course answers that question.

 

You have never had me for a course and so have no stories from other students to rely on.  Here is a cliff notes version of what you might hear if you were to talk to former students of mine.  I am tough but fair.  I have little tolerance for trash disguised as coursework.  The dog ate my homework” stories do not fly.  If you have a legitimate problem or obstacle to submitting assignments or taking tests, I will go the extra mile to help you.  I am informal in dress and presentation.  Do not let this belie the fact that I take this job and this material very seriously.  You will work hard but I will be working hard along side you to provide challenging, interesting, and relevant materials.  I make mistakes and have no problem admitting them.  However, I am bright and experienced, and will not tolerate any disrespect.  I will not disrespect you.

 

I firmly believe you can succeed in this course, can complete every assignment, and can master every test question.  I believe you will meet my high expectations.  If you are working hard at this course, I will do all I can to insure you get the grade you wish.  If you attempting to do as little as possible to succeed, or just plain being lazy, you will find me indifferent to your success.

 

Come to class on time, just as you would if working for a prospective employer.  If I am talking you are not talking.  This is also a behavior I get upset with very quickly.  If you want to chat, don’t come to class.  If you are talking when I am, please leave.


 Tentative Schedule: 

 

Week

Tuesday

Thursday

Material

Assignment

1

Aug 29 – Introduction, Syllabus, Course Information, assignment 1

Coding and commenting style; developing and implementing algorithms

Chapters 1 - 4 McConnell

Work on Assignment 1 Commenting and Style assignment

2

Sept. 5 –Design and implementation overview

Implementation of design; classes and functions

Chapters 5 and 6 McConnell

Assignment 1; due Sept. 7

3

Sept. 12 – Coding for today and tomorrow

Flexible, defendable, and safe design and coding

Chapters 7, 8 and 9 McConnell

Read, Work on Assignment 2

4

Sept. 19 – Rethinking design and coding

Review for Test 1; complete McConnell 1-9

Complete 1-9 McConnell

Read, Assignment 2 due Sept. 19, Study for test

5

Sept. 26 – Test 1

Return Test 1; design patterns

Chapter 1 Metsker

Read

6

Oct. 3 – Interfaces, delegates, and design

Applying interfaces; Adapter Pattern

Chapters 2 and 3 Metsker

Read, Work on Assignment 3 due Oct. 12

7

Oct. 10 – Façade Patterns

Composite Pattern

Chapters 4 and 5 Metsker

Assignment 3 due Oct. 12

8

Oct. 17 – Bridge Pattern

Integrating patterns

Chapter 6 Metsker

Read,   Work on Assignment 4

9

Oct. 24 – Responsibility Patterns

Singleton Pattern

Chapters 7 and 8 Metsker

Read Assignment 4 due Oct. 24

10

Oct. 31 –Observer Pattern

 

Implementing Observer Pattern

Chapter 9 Metsker

Read, work on assignment 5

11

Nov. 7 – Election Day, NO CLASS

Construction Patterns; Builder pattern

Chapters 14 and 15 Metsker

Read, Assignment 5 due Nov. 9

12

Nov. 14 – Factory Pattern

Abstract Factory Pattern

Chapters 16 and 17 Metsker

Prepare for Test 2; Assignment 6 due Nov 16

13

Nov. 21 Test 2

Thanksgiving Holiday

 

 

14

Nov. 28 – Review Test 2; Operational Patterns

Template Pattern

Chapters 20 and 21 Metsker

Read, work on Assignment 7

15

Dec. 5 – State Pattern

Strategy Pattern

Chapters 22 and 23 Metsker

Assignment 7 due Friday Dec. 8

16

December 11-15 Finals week

 

 

Final Exam