
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:
- Object-Oriented Paradigm—The OO paradigm models computing
as the collaboration of objects rather than the decomposition of
operations.
- UML—The Universal Modeling Language should be used for diagramming.
- Coding Practice—Computing professionals are comfortable
with code; comfort comes from practice reading, writing, and debugging
code.
- 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.
- 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.
- 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.
- 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:
- 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.
- Present new material - this may be in the form of a short lecture or group activity.
- 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:
- Come to class, come to class, come to class - Students
who attend class regularly will keep up with the workload better, will
gain insights from talking with classmates or the instructor, and will do
better in this class as a result. We use a lot of active learning in class so attendance is mandatory.
- Workload -This is a four(4) credit hour class. There
is considerable outside work expected. More work will be done at the end
of the semester than at the beginning. Be sure to get started on
programming assignments early as these may be more difficult than they
first appear.
- Late assignments - All lab assignments and homework
are due at the beginning of class on the day that they are due. No late
assignments will be accepted for credit, although I will review late
assignments at your request. For programming assignments, late
assignments will have a per day penalty associated with them.
- Exams - We have two midterms and a final exam. It is
expected that all students will take the exams at the normally scheduled
time. If an emergency occurs which requires you to be away, let me know
as soon as you know about the situation. I may request documentation in
order to allow you to take a make-up exam.
- Honor Code -Almost every semester I have incidents of
students cheating on programming
assignments in some fashion. I report ALL incidents of academic
dishonesty to the Honor Council. If the violation is severe, I will refer
it to the Honor Council for formal resolution. Less severe violations may
be handled informally. If you know of cheating in this class, it is your
responsibility to let the instructor know as soon as possible. If you are
involved in a situation where you are not sure if what you did was right,
please see me.
- Extra Credit - I generally do not have extra credit
opportunities. One exception (and there may be a few others) are students
who find bugs in the submit system are given extra points on that assignment
only. There are many opportunities in this class for credit.
Student Success - You will be successful in this class if
you:
- Attend class and lab each day.
- Engage with the material...don't passively listen in class and expect to do well on the application assignments.
- Ask for help when you need it. We have TA assistance in the evening,
and I have plenty of office hours.
- Get started early on assignments.
- Think about what you are doing...don't just do. In
this course, the why is more important than the what.
- Experiment with the language and assignments and talk to your
colleagues during lab time. Feel free to explore.
- Don't put yourself into a position of providing unauthorized
help to another student. Labs are designed for free exploration
and that includes working with others. Programming assignments
are your way to test what you know and test your problem solving ability.
While we may have some programs in which you will be able to work
with a partner, most will be individual assignments. If you have
a question about what help may be provided, please see me.
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.