CSS 342A: Mathematical Principles of Computing
Autumn 2003 MW 330-535pm
Prof. Munehiro Fukuda
Professor:
Munehiro Fukuda <mfukuda@u.washington.edu>,
room UW1-331, phone 352-3459, office hours MW 2:30pm-3:30pm and 5:45-6:15
Course Description:
This sequenced course integrates mathematical principles with detailed
instruction in computer programming. Topics include presentation of
formal arguments to prove mathematical statements; development of
algorithms; sorting and searching; algorithm analysis; introduction to
object-oriented programming; basic abstract data types including
stacks, queues, and lists.
Prerequisites:
Calculus, Probability & Statistics, and two quarters of programming
(C/C++ competency).
Grading:
Assignments |
40% |
A scale of 90s (3.5-4.0), 80s (2.5-3.4), 70s (1.5-2.4), |
Midterm Exam |
30% |
60s (0.7-1.4) will be approximately followed. |
Final Exam |
30% |
Assignments consist of chapter problems and programs. |
All homework assignments are graded in accordance with the
corresponding grading guide which you can see through the class
website. The key answer will be made available to you when you receive
your graded work. You have a right to discuss about regrading your
work, which is however given for a week after you have received your
grade. Regrading will be discussed thoroughly based on the grading
guide and key answer. From my experience, the class average generaly
stays in mid 80s (3.0 - 3.2), however there may be some assignments
that turn out harder, and thus the averages are lower. In this case, I
will adjust for them before returning the graded work to you.
Textbooks:
- Data
Structures and Problem Solving Using C++, Second
Edition, Mark Allen Weiss, Addison-Wesley, 2000.
-
Discrete mathematics and Its Applications, Fifth
Edition, Kenneth H. Rosen, McGraw Hill, 2003.
- A C++ book of your choice.
Some C++ Books:
References:
-
Effective C++ Second edition: 50 Specific Ways to
Improve Your Programs and Designs, 2nd edition, Scott Meyers,
Addison-Wesley, 1998.
-
More Effective C++ 35 New Ways to Improve Your
Programs and Designs, Scott Meyers, Addison-Wesley, 1996.
- Thinking in C++, Bruce Eckel, Second edition,
Prentice Hall, 2000.
Policies:
All homework assignments are to be done independently. Any
collaboration of work will result in severe penalty. You may discuss
the problem statement and any clarification with each other, but any
actual work to be turned in, must be done without collaboration.
Hard copies of your assignemnt work are due at the beginning of class
on the due date. Soft copies are due at 5 minutes prior to the
beginning of class on the due date. No late submissions will
be accepted. No make-up exams will be given, either. Except for
special circumstances such as medical and other emergencies, in which
case you must present a written proof to me. Barring emergencies, I
must be informed before the assignment due date or the exam. Note that
disk crash is not considered as an emergency.
To request academic accommodations due to a disability, please contact
Disabled Student
Services (DSS) in Library Annex Building, Room 106, (email rlundborg@bothell.washington.edu,
TDD: 425-352-5303, and FAX: 425-352-5444). If you have a documented
disability on file with the DSS office, please have your DSS counselor
contact me and we can discuss accommodations.
Course Goals:
The overall goal of CSS 342 is to learn discrete mathematics concepts
and computer programming. You solve mathematical problems, present
formal mathematical arguments, and program solutions to problems. You
review programming basic data types, learn searching and sorting
algorithms, are introduced to object-oriented programming and basic
abstract data types, and study algorithm analysis. The programming
language C++ is studied. Good software engineering techniques are
used throughout. As with most technical courses, besides ability and
motivation, it takes time to learn and master the subject. Expect to
spend an additional 10 to 15 hours a week outside of class time on the
average.
Programs:
Turn in both a hard and a soft copy of your assignment work.
- Harcopy must include your program specification,
explanation, program listing, and execution output. Write your name on
top of paper, right hand corner. Use a typewriter font (e.g. courier
new) for all.
- Softcopy must be a tar archived file that includes
only your source code. Your code should compile and run properly
using g++ under linux since I test them only using g++. Follow
the softcopy submission procedure shown below:
-
To log in the uw1-320-lab linux laboratory:
ssh -l your_linux_account uw1-320-lab.bothell.washington.edu
-
To compile your program using g++:
g++ your_program1.cpp your_program2.cpp ...
If a given .cpp file includes only template definitions, don't
compile it directly. Such file should be treated as a header file,
thus included in another .cpp file that must be compiled using
g++. Upon a successful compilation, you will get an a.out
executable file.
-
To archive your source programs in a file named "myFile.tar":
tar -cvf - *.h *.cpp > myFile.tar
The file name must be the concatenation of your first name initial,
your last name and ".tar". For instance, if your name is Micky Mouse,
the corresponding file name is "MMouse.tar".
-
To submit your archived file "myFile.tar" including your homework
assignment 1:
chmod 644 myFile.tar
cp myFile.tar ~mfukuda/css342/f03/hw1/
If your name is Micky Mouse and you would like tosubmit your
assignment 2, you should type:
chmod 644 MMouse.tar
cp MMouse.tar ~mfukuda/css342/f03/hw2/
Don't email your softcopy to me. You may overwrite your previous copy
with a newer copy as many times as you hope, however the corresponding
directory such as hw1/, hw2/, hw3/, hw4/, and hw5/ will be
closed exactly at the due time. These directories are read-protected,
and thus you won't be able to read any files in there.
- Hard copies are due at the beginning of lecture on the
specified date. Soft copies are due at 5 minutes prior to the
beginning of lecture on the specified date. No late submissions will
be accepted unless under excpetional circumstances.
- Syntax errors and run-time errors with not much output yield a
low grade. Run-time errors (occurring after the majority of the
output), or incorrect answers will result in a significant number of
points being deducted from your grade. In other words,
CHECK YOUR ANSWERS!!!!!!
Otherwise, you will be graded on documentation (clarity and
completeness), style (indentation, use of blank lines and spaces),
meaningful identifier names, organization of your program (modularity,
design), efficiency (no useless, unnecessary, or unnecessarily
complicated code), output (clarity and format), the overall
readability of your entire program, and following directions.
Topics covered and tentative 342 winter schedule:
Note that this is an approximate ordering of topics. Chapters will
take about the allotted time and not all sections in all chapters are
covered. (Topics labeled C++, refer to Data Structures and Problem
Solving Using C++. Topics labeled Math, refer to the Discrete
Mathematics and Its Applications.)
Week |
Date |
Topics |
Reading |
Assignment |
1 |
Sep 29 |
Introduction, Preliminaries, unix email accounts,
principles of programming and software engineering, and
review of arrays, pointer, and structures |
C++ ch1 |
Program 1
assigned |
|
Oct 1 |
Objects and classes |
C++ ch2 |
|
2 |
6 |
Templates |
C++ ch3, ch5 |
  |
|
8 |
Algorithm analysis |
C++ ch6 Math Ch2.2,2.3 |
 
|
3 |
13 |
Algorithm analysis (continued) |
  |
Program 1 due
Program 2 assigned
Writing Exercise 1 assigned |
|
15 |
Recursion |
C++ ch8 Math Ch6.1-6.3 |
|
4 |
20 |
Recursion (continued) |
|
|
|
22 |
Induction |
Math 3.2,3.3,3.5 |
|
5 |
27 |
Sorting algorithms |
C++ ch9, Math 2.1,3.5 |
Program 2 due Program 3 assigned |
|
29 |
Sorting algorithms (continued) |
|
Writing Exercise 1 due
|
6 |
Nov 3 |
Midterm exam |
|
|
|
5 |
Linked lists |
C++ ch17 |
|
7 |
10 |
Linked lists (continued)
Quiz example
Application examples |
|
Program 3 due Program 4 assigned |
|
12 |
Stacks and Compilers |
C++ ch12 |
|
8 |
16 |
Last day to drop a course |
|
|
|
17 |
Stacks (continued) |
|
|
|
19 |
Queues |
C++ ch16 |
|
9 |
24 |
Queues (continued)
Application examples |
|
Program 4 due
Project assigned |
|
26 |
Project |
|
|
10 |
Dec 1 |
Propositions |
Math ch1.1,1.2 |
Writing Exercise 2 assigned |
|
3 |
Quantifiers |
Math ch1.3,1.4 |
|
11 |
8 |
Proofs |
Math ch1.5,1.7,3.1 |
|
|
10 |
Review & wrap-up |
|
Write Exercise 2 due |
12 |
15 |
Final exam, in class on Monday |
|
Project due |
Programming assignments:
- Program 1 exercises how to
construct abstract data types through implementing a feet/inches class
in C++. It also reviews type conversions for classes, operator
overloading, and input/ouput including the friend concept.
- Program 2 analyzes the worst case
of Euclidean algorithm.
- Program 3 This programming
assignment draws complex graphics using recursive calls.
- Program 4 exercises dynamic
memory allocation, copy constructor design, and special cares for the
link head through constructing a doubly-linked list. You are also
supposed to implement a text editor with your doubly-linked list.
- Program 5 (Project) searches
for a shortest path by extending the recursive solution of search
problem you learnt in the Stacks section. (No Dijkstra's algorithm is
used.) You are supposed to use arrays, lists, stacks, and queues.