(prepared by Dr. L. Lilien)
Department of
Computer Science
Instructor :
Dr. Leszek Lilien Office:
B-249 Lectures : TR
10:00 – 11:15 am, C-224 Office Hours: T
11:30 – 12:30 pm
R
4:30 – 5:30 pm Home
page:
http://www.cs.wmich.edu/~llilien Course
pages:
http://www.cs.wmich.edu/~llilien/
teaching/2009fall/cs1120 Email:
llilien@cs.wmich.edu |
Other section instructor: Ms. Stephany Coffwan-Wolph Email:
stephany.s.coffman-wolph@wmich.edu |
Lab TA: Mr. Andrew Kenneth Martzke Email: andrew.k.martzke@wmich.edu |
|
** IMPORTANT *** Email requirements for L. Lilien
Replies to messages that do not conform to the following
requirements might be delayed or missing (e.g., due to automatic classification
of the message as junk mail):
a) The message should be
sent from a WMU account - ending with “wmich.edu” (of course, this includes
accounts ending with “cs.wmich.edu”).
b) The message should have a descriptive
subject with the indicated prefix:
CS1120-F09--<your
last name>: <descriptive subject>
For example, the subject of a message sent by John
Smith should be as follows: CS1120-F09--Smith: sick and
absent
c) Attached files should be scanned with
up-to-date anti-viral software, and the message including them should contain
the following statement:
I have scanned the enclosed
file(s) with <name
of software and its
version>, which was
last updated on <date>
where <date> should be today’s date. (You should
have the habit of updating
your anti-viral software daily!)
This is the standard Computer Science II course using the C# computer language. The emphasis is on designing and programming object-oriented computer solutions to problems, as well as on the data structures used for this purpose. An introduction to the analysis of algorithms is made. Students must register for both a lecture section and a laboratory section.
By
Courses: CS1110 – Computer Science I
or equivalent with a grade of C or better (prerequisite); Math1220 or Math 2000
(co-requisite)
By
Topic: Basic concepts of high-level
language programming – conditional structures; looping structures; arrays;
program logic – to solve problems; Basics of object oriented programming
- be able to create and use elementary objects; C# language for both procedural
and introductory object oriented programming; Basics of the software life
cycle; Validating quality of software produced; Introductory sorting and
searching algorithms; Algorithms for elementary problem solutions; Documenting
programs effectively and efficiently.
Learn about various phases of the software life cycle
Understand the concepts of classes and object oriented programming
Understand the concept of recursion and structured programming
Learn basic mathematical techniques for analyzing algorithm complexity
Learn common data structures
Learn and use version control and documentation tools
Learn about unit testing/function testing
Be able to write well-structured and well-documented
C# programs
Be able to use recursive solutions for recursive
problems
Be able to program various searching (linear, binary)
and sorting (merge, quick) algorithms and be able to analyze their efficiencies
Be able to design, create and use class and object
hierarchies
Be able to use method or operator overloading
Be able to design complex data structures—including
two-dimensional arrays (tables), linked list, stacks and queues. Also, be able
to use collections or generics to perform operations on these data structures
Be able to work in a pair or
team programming environment
H. M. Deitel & P. J. Deitel, Visual C# 2008. How to Program. Third Edition.
Pearson
Prentice Hall, Upper Saddle River, NJ, 2006.
ISBN: 013605322X
http://www.deitel.com/Books/CSharp/VisualCSharp2008HowtoProgram3e/tabid/2933/Default.aspx
During the term there will be two in-class midterm exams and a final examination. Laboratory assignments will be given in the regularly scheduled laboratory. Pop-quizzes may be given at anytime in lab or lecture without prior notification. Your grade will be computed from your performance on these components using the following weights:
Midterm
Exam
1
15%
(expected around 10/5/09)
Midterm
Exam
2
15%
(expected around 11/12/09)
Final
Exam
20%
(Thursday, 12/17/09, 8:00 am -10:00 am)
Labs
40%
Lab
quizzes & pop
quizzes
10%
PMT
(Programming Skills Mastery Test – more below)
0%
(during lab hours, probably in the last week)
(PMT make up: probably in the last week)
The following basic grading
scale will be used:
A – 90; BA – 85; B – 80; CB – 75; C – 70; DC – 65; D –60.
If you miss an exam (a Midterm Exam or the Final Exam), the decision as to whether or not it is made up and how it is made up will be made on an individual basis. To be excused there must be significant circumstances beyond the student’s control. Generally this will require documentation, such as a doctor’s note in the case of an illness. Normally, if your absence from an exam is excused, you will have to take a make up exam. Contact the instructor asking for a make up exam as soon as it is possible (if possible inform the instructor even before the exam that you will miss).
Students taking this course are required to register for a lab section. Lab grades are based on student performance on programming assignments and quizzes. Additionally, the Programming Skills Mastery Test (PMT) is given in lab.
Lab assignments will be given on a regularly scheduled basis. Many of these assignments will need to be worked on outside of the regular scheduled labs.
Each assignment will have a due date/time. For each day an assignment is late, 5% of the total possible points for the assignment will be deducted. (If an assignment is more than 20 days late, it is no longer worth any points.) Weekends and holidays are all counted when calculating lateness. No assignments may be submitted after 11:59 PM on the day preceding the last day of the classes (before the Final Exam Week). By this time all work should be complete and submitted.
There will be regular quizzes
given in the lab. Additionally, pop-quizzes may be given at anytime in the labs
or lectures without prior notification. If you miss a quiz for any
reason, you will receive a 0 on it.
During the last lab session of the semester, students will be given the Programming Skills Mastery Test (PMT). The test will consist of a short programming problem. Students must program the solution in an essentially complete and correct form in the allotted time. This problem must be solved within the allotted time to earn a passing grade in the course. Students that fail the PMT on their first attempt will be given the second, and last, chance with a different problem.
Producing competent programmers is a primary goal of this course, and therefore a minimum performance in lab is required for students to pass the course.
You must pass the lab with at least 60% of the total possible lab points in order to pass the course regardless of exam scores.
You should strive to complete all assignments. In order to pass the laboratory, you may have at most two assignments incomplete. Even if an assignment is so late that the credit would be 0, it can still satisfy the completeness policy if it is completed and submitted.
You must pass the PMT to pass the course.
You
are expected to stay alert and pay attention to the directions/announcements in
the class. Cellphones, PDAs, and other electronic devices should NOT be used
during the lecture and should be turned-off. If available, please do bring your
laptop to the class. Email checking or web-surfing of
non-course related material is NOT permitted during the class. You may
surf the web only when specifically told to do so. In order to maintain the
integrity of the classroom and if I feel it is distracting you or others, I may
ask you to turn-off your laptop.
Please
note that the incomplete grade - I - is intended for the student who has
missed a relatively small portion of work due to circumstances beyond his/her
control. In general, performance on work done must be at a level of C or
better in order to qualify for an incomplete. An I grade will
not be given to replace an otherwise low or failing grade in the class.
The following statement has been approved and distributed by the Western Michigan University Faculty Senate:
You are responsible for making
yourself aware of and understanding the policies and procedures in the
Undergraduate and Graduate Catalogs that pertain to Academic Honesty. These
policies include cheating, fabrication, falsification and forgery, multiple
submission, plagiarism, complicity and computer misuse. [The policies can be
found at http://catalog.wmich.edu
under Academic Policies, Student Rights and Responsibilities.] If there
is reason to believe you have been involved in academic dishonesty, you will be
referred to the Office of Student Conduct. You will be given the opportunity to
review the charge(s). If you believe you are not responsible, you will have the
opportunity for a hearing. You should consult with me if you are uncertain
about an issue of academic honesty prior to the submission of an assignment or
test.
We also encourage you to browse http://osc.wmich.edu and www.wmich.edu/registrar to access the Code of Honor and general academic policies on such issues as diversity, religious observance, student disabilities, etc.
Unless otherwise told, you may not bring aids to exams. Submission
of another person’s work in part or whole is not permitted. Learning can
certainly occur with discussion of class material and assignments with other
students, and we will be doing considerable collaborative activity, but at all
times take care that you don’t represent the work of another as your own.
If you are
copying another’s work in part or whole, either by hand or electronically, you
are going too far.
If two or
more people are working so closely together that the outcomes, particularly on
significant portions of computer programs, are essentially line-by-line the
same in logical structure, they are going too far.
You should
not give your completed work to someone else or accept another’s completed work
to “review or look at” in either hardcopy or electronic form. This too
easily facilitates copying.
Easy availability of information, material, source codes, lecture notes
etc on the Internet may make it possible to find solutions to your assignments
on the Internet or elsewhere. It is okay to refer to those, understand them and
use them to enhance your solutions, generate your own ideas etc. However, you
must give proper and full credit to original authors of the work, if you
include their ideas and/or solutions. Failing to do so is part of academic and
professional dishonesty. It will not be tolerated in this class. Do not give in
to temptations.
If you are found responsible for violation of academic honesty in the
course, you will receive a course penalty up to and including an E grade for
the class. (Note that the Office of
Student Conduct can impose additional penalties.)
Coding Standards
Declarations vs. definitions; Headers and code; Modular; Object-oriented
Compilation
Process
Preprocessor; Compilation; Linking
Recursion
Searching; Sorting
Classes
What is a class? Terminology: objects, classes,
instances; Examples of classes from modeling; Member functions/methods; Member
variables; Access functions (& pass by reference); Constructors (and
destructors); Scope; Constant/static objects, functions; Static members
Why overload? How overloading works; Operators; Unary and binary arithmetic
operators; Comparison operators
Inheritance
Has-a vs. is-a designs; Access: public, private, and protected; Abstract base classes; Virtual functions; Late binding
Stream I/O
Stream classes and objects; Basic operations on streams; Read(),
ReadLine(), etc.; Using text files
Data Structures
Arrays, linked lists, stacks, queues; Generics / Collections
Tools
Debugger; Version Control; Documentation
Modular Program
Design
Abstraction - functional and data; Problem statements; Producing a basic design
document; Moving from design to code
Recursion
Recursive functions: factorial and fibonacci; Recursive
algorithms: towers-of-Hanoi, binary search, merge sort, quick sort;
Problem-solving and traversing search spaces
Array Data
Structures
Arrays of objects; Dynamic arrays
Linked Lists
Insertion: beginning, middle, end; Deletion: beginning, middle, end; LL as a
modeling tool (trains, etc.)
Stacks
Uses and push/pop; Implementation as a LL; Sample Algorithms: postfix,
delimiter match
Queues
Uses and enqueue/dequeue;
Sample algorithms: palindromes, network packet queues, simulation
Program Analysis
Analytic vs. experimental methods; Big-O concepts; Basic code analysis:
loop structures; Analysis of bubble, insertion, and selection sorts; Analysis
of binary search, quicksort, and mergesort
Algorithms
Linear and binary search; Bubble, insertion, selection, quick, and merge
sorts; Postfix evaluation; Reversing linked lists; Palindrome recognition
Calendars are subject to change. Dates and events are added or changed as information becomes available.
Date
|
Day
|
Fall 2009
|
Mar 2 |
Monday |
View Course Offerings Fall
Schedule through GoWMU |
Mar 16 |
Monday |
Registration begins |
Aug 1 |
Saturday |
Last day to apply for Dec
graduation |
Sep 4 |
Friday |
Advising Day |
Sep 7 |
Monday |
Labor Day Recess |
Sep 8 |
Tuesday |
Classes begin 8 a.m. Tuition due |
Sep 14 |
Monday |
Drop/add
ends;
last day for 100% refund |
Sep 15 |
Tuesday |
Census |
Sep 16 |
Wednesday |
$100 late
add fee begins. Withdraws recorded as
"W" on transcript |
Sep 17 |
Thursday |
Last day for 90% tuition
refund for a complete
withdrawal |
Sep 21 |
Monday |
Last day for 50% tuition
refund for a partial
withdrawal |
Oct 2 |
Friday |
Last day for 50% refund for
complete
withdrawal |
Oct 28 |
Wednesday |
Last day for 25% refund for
Fall complete
withdrawal |
Nov 9 |
Monday |
Last day to withdraw from
Fall courses |
Nov 25 |
Wednesday |
Thanksgiving Recess begins
at noon |
Nov 30 |
Monday |
Classes resume |
Dec 1 |
Tuesday |
Last day to apply for April
graduation |
Dec 14 - 18 |
||
Dec 19 |
Saturday |
Semester ends/Commencement |
Dec 22 |
Tuesday |
Fall grades due at noon |
Dec 25 |
Friday |
Holiday closure begins
(University closed) |
Last updated on 12/9/09 (by L.
Lilien)