JMU

James Madison University

CS 239 Advanced Programming - Syllabus


General Overview: Students use various advanced problem-solving strategies to develop algorithms using classes and objects. Students also learn how to implement and use elementary data structures, including character strings, records, files, stacks and queues. The focus of this course is on developing clear, concise, and correct algorithms to solve problems on a digital computer.
Course Meets: Tues and Thursday "lecture": 11-12:15 in Room ISAT/CS 236
Monday and Wednesday labs in Room ISAT/CS 248:
Section 1 10:10 - 11:00     OR
Section 2 11:15 - 12:05
Course Schedule: Course Schedule
TA Schedule: TASchedule
Links to Course
Material
PA1
PA2
PA3
PA4 - Available soon
Resources

Instructor Information

Nancy Harris
Office: ISAT/CS Room 217
Phone: 568-8771 (88771)
E-mail: harrisnl with usual jmu extension
IM: harrisnl55
Web: Home Page
Policies: Instructor Policies


CS239 – Advanced Programming

General Overview:

Students use various advanced problem-solving strategies to develop algorithms using classes and objects. Students also learn how to implement and use elementary data structures, including character strings, records, files, stacks and queues. developing clear, concise, and correct algorithms to solve problems on a digital computer.

Prerequisites: CS 139 or equivalent with a grade of "C" or better.

Note: Students planning to continue to CS240 next semester should take CS 227 during this semester. CS 227 is a prerequisite to CS 240.

Themes:

  1. Object-Oriented Paradigm—The OO paradigm models computing as the collaboration of objects rather than the decomposition of operations.
  2. UML—The Universal Modeling Language should be used for diagramming.
  3. Coding Practice—Computing professionals are comfortable with code; comfort comes from practice reading, writing, and debugging code.
  4. Software Engineering Approach—programming is part of a disciplined development effort that requires thoughtful design and coding, desk-checking, and thorough unit and integration testing.
  5. Professional Ethics—Intellectual property is owned by its creators and cannot be appropriated without permission. Even when used with permission, its creator must be cited. Turning in someone else’s intellectual property as one’s own is a violation of professional ethics as well as the JMU Honor Code.
  6. Reading Specifications--Precise specification of requirements, designs, and so forth, are basic documents in computing. Students must develop skills in reading specifications carefully and understanding exactly what they state.
  7. Professional Conduct -- Computer scientists must become adept at "figuring stuff out".  Passive absorption of "lecture" material is not the way to learn in this fast changing environment.  Students should be prepared to spend time engaging with the material in a variety of ways including but not limited to lab work, code walk throughs with fellow students, search for elegant solutions, and practice with programs outside of the class environment.

Class Format:

Lecture days - The T/Th class sessions will have three purposes:
  1. Review of the prior class period lab - you will work together in groups to review the solutions to the lab exercises.  This is an opportunity to make sure that you understand the lab and the concepts behind it.  There will be opportunity to share particularly elegant solutions with the class as a whole or to answer questions that the group is struggling with.  A "model" solution will be presented.
  2. Present new material - this may be in the form of a short lecture or group activity.
  3. Practice with the new material - this may be in the form of a group or solo activity.  This segment may lead into a homework assignment to prepare for the lab the following day.
Lab days - The M/W class sessions have one primary purpose and that is to enable students to practice with new material in exercises directed to learning one new concept.  Labs will generally take longer than a lab period, so be prepared for homework on lab nights.  Unless otherwise specified, labs will be due the day following the lab period at the beginning of class.

Outside of class work - This includes completion of lab assignments, homework assignments, individual reading and practice, and longer term programming assignments.  I anticipate 7 programming assignments through the semester, about 2 weeks apart.  

Communication:

We will use Blackboard and the web as a means of communicating. Announcements for class will be made on the Blackboard announcements page or the course schedule page if Blackboard is unavailable. Any other announcement that you receive through other means (such as e-mail) is suspect unless confirmed by Blackboard or the course web page. If I send an e-mail to the class as a whole, I will also put the text into a Blackboard or web announcement.  If school is cancelled due to snow days, be sure to check the announcements for any due date changes or homework assignments.

Also, use my office hours if you are having difficulty, or just need clarification on an assignment or with something that you are working on.  Office hours belong to the students and is a good way for us to communicate individually.


Textbook and Required Material

There is no required text for this class. However, you should have a reference text of some sort.  I will annotate the schedule with readings from the Gaddis book from 139 as well as references to the Java Tutorial.  We may also use other supplemental materials..
Java API's: http://java.sun.com/javase/6/docs/api/
Java Online Tutorial: http://java.sun.com/docs/books/tutorial/index.html
Reference Text: You may use any other textbook that you find helpful as a reference, including the book you used for your first semester. An excellent reference book is Cay Horstmann's text, Big Java, published by John Wiley and Sons. See me if you would like to borrow this or any other books.
JAC Card:
There may be times in lab that you need to print a worksheet, a completed assignment or other work. You must have your JAC card with you and some money on it for printing. Make sure that you have a couple of dollars on the card each day.
Printing: 
In addition to any printing required in the lab, you will need to bring a copy of your completed lab assignment with you to class each lecture day.  For those with a laptop, that will be sufficient for sharing in the classroom.  For those without, you should print a copy of any worksheets or completed code.
Backup Media:
It will be important that you have a backup device available to use in the lab. While you will get some network space, sometimes the network goes down and you need some way to continue working. Lab machines do not provide a permanent save. When the machine is logged out, your work is lost.

Grading

All exams are cumulative due to the nature of the material.  Each exam will focus on the most recently covered material (since the last exam), but anything covered in the semester is fair game.
Exam 1 15%
Exam 2 20%
Final Exam 20%
Programming Assignments 30% 
Lab, homework, class participation 15%

I generally grade exams and programming assignments on a 100 point scale. Letter grades correspond to 10 point ranges...90 - 100 = "A", 80 - 89.999 = "B", etc. "F" is used for work below 60%.  Labs will be graded based on completeness and your preparation for review in "lecture".  This will be a peer review grade.


Class Policies and Student Success

See the link above for general instructor policies. Specific policies and items which will insure your success in this class are:

Student Success - You will be successful in this class if you:

If you need additional resources to help you with your learning, let me know. Additional reference books may be placed in the library upon request.


Students with Disabilities:If you are a student with a documented disability, who will be requesting accommodations in my class, please make sure you are registered with the Office of Disability Services, Wilson Hall, Room 107 (568-6705) and provide me with a copy of your Access Plan letter outlining your accommodations. I will be glad to meet with you privately during my office hours to discuss your special needs. The sooner you can do this, the better I can assist you in meeting your learning goals in this course.

Student Responsibility: Student are responsible for adding and dropping courses via e-campus. The last day to add a course for the Spring 2008 semester is Thursday, January 24, 2008 (signatures required after Tuesday January 15). The last day to drop a course for the Spring 2008 semester with a "W" grade is Friday March 14, 2008. I do not give "WP" or "WF" grades to students requesting a drop after the deadline except in extraordinary circumstances.

Religious Observance: Students who are unable to attend class due to religious observance may request deadline extensions BEFORE the expected absence. I will do my best to accommodate your special circumstances.

For clarification of these and other instructor policies please refer to the policies link.


Department of Computer Science Nancy Harris Home Page Current Classes Link