CSS 342A: Mathematical Principles of Computing
Autumn 2007 MW 330-535pm at UW1-041
Prof. Munehiro Fukuda
Professor:
Munehiro Fukuda <mfukuda@u.washington.edu>,
room UW1-331, phone 352-3459, office hours MW 2:20pm-3:20pm
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; and basic abstract data types including
stacks, queues, and lists.
Prerequisites:
Calculus, Probability & Statistics, and two quarters of programming
(C/C++ competency).
Grading:
Course Work |
Percentage |
Achievements |
Corresponding Numeric Grade |
Midterm Exam |
25% |
90s |
3.5 -- 4.0 |
Final Exam |
25% |
80s |
2.5 -- 3.4 |
Prog. Assignments 1 - 7 |
28% (4% each) |
70s |
1.5 -- 2.4 |
Quizses 1 - 4 |
12% (3% each) |
60s |
0.7 -- 1.4 |
Labs 1 - 7 |
7% (1% each) |
In-Class Exercises 1 - 4 |
4% (1% each) |
Total |
101% (including 1% bonus credit) |
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 through ePost
when you receive your graded work. You have a right to discuss about
regrading your work, which must be however done within a week after
you have received your grade. Regrading will be discussed thoroughly
based on the grading guide and key answer.
Textbooks:
- Data
Structures and Problem Solving Using C++, Second
Edition, Mark Allen Weiss, Addison-Wesley, 2000.
-
Discrete mathematics and Its Applications, Sixth
Edition, Kenneth H. Rosen, McGraw Hill, 2007.
- A C++ book of your choice.
Some C++ Books:
References:
-
Effective C++: 55 Specific Ways to
Improve Your Programs and Designs, 3rd edition, Scott Meyers,
Addison-Wesley, 2005.
-
More Effective C++ 35 New Ways to Improve Your
Programs and Designs, Scott Meyers, Addison-Wesley, 1996.
- Thinking in C++, Volume 1 and 2, Bruce Eckel, Second edition,
Prentice Hall, 2000 and 2003.
Data Structure Books:
-
Data Structures and the Standard Template Library
1st edition,
William J. Collins, McGraw-Hill,
2003.
-
Applied Data Structures with C++
1st edition,
Peter Smith, Jones and Bartlett,
2004.
-
Data Structures and Algorithms in C++
Michael T. Goodrich, Roberto Tamassia, and Divad M. Mount,
John Wiley & Sons,
2004.
Policies:
Homework: 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. Plagiarism is 100% intolerant and thus reported
to Office of Academic Affairs.
Both hard and soft copies of assignment work are due at the beginning
of class on the due date. No late submisions will be accepted.
Except for special circumstances such as medical and other
emergencies, in which case you must present a written proof to me.
Barring emergencies, the professor must be informed before the
assignment due date. Note that disk crash is not considered as an
emergency.
Laboratory work and in-class exercises: This series of work
will be done by a group of students. At the end of each session, each
group is supposed to turn in a short report that describes an answer
and lists all group members' names. If you miss a session and still
hope to make it up, you need to work on its topic by yourself and turn
in a report with a written proof of your emergency.
Exams and quizses: Each quiz will be given from the scope
covering its previous non-turn-in writing exercise and in-class
exercise. It will be given for the first 20 minutes of the class. So,
don't be late. Midterm and final examinations cover weeks 1 - 5 and 6
- 10 respectively. All quizes and examinations will take place in the
same classroom. Niether make-up exams nor quizzes will be given
unless you inform me of your medical/family/business emergency.
Special needs: To request academic accommodations due to a
disability, please contact Disabled Student
Services (DSS) in Library Annex Building, Room 106, (email dss@uwb.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. The
class reviews programming basic data types, learns searching and
sorting algorithms, discuesses object-oriented programming and basic
abstract data types, and studies 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 programming assignments.
- Harcopy must include your program specification,
explanation, program listing, execution output (and
discussion/verifications/evaluations if required). 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 the professor (and his grader) test
them only using g++. Upload your tar-archived file through
CollectIt: Don't email your softcopy to me.
Syntax errors and run-time errors without 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.
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.
Read assignment.html for more details.
Sample code;
You can find some sample programs regarding standard template
libraries, templates, recursion, sorting, lists, stacks, and queues in
uw1-320-lab.uwb.edu: ~css342/code/. You may refer to those
programs when working on your lab work and homework. Note that you
cannot read all files under this directory, since those unreadable
files are key answers.
Catalyst EPost (Message Board):
You can access
CSS342A GoPost to exchange messages with
your classmates. Please use this board for only dicussions. No junk
email. Note that the professor will not keep track of all
messages. The professor monitors this board once a day (in the
morning) from Monday to Friday.
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 |
Lab, Exercises, and Quizes |
Reading |
Assignment |
0 |
Sep 26 |
Introduction |
| C++ ch1 |
|
1 |
Oct 1 |
Objects and classes |
Lab work 1
| C++ ch2 |
Program 1 assigned |
|
3 |
Templates |
| C++ ch3, ch5 |
  |
2 |
8 |
Algorithm analysis |
| C++ ch6 Math Ch2.2,2.3 |
  |
|
10 |
Algorithm analysis (continued) |
Lab work 2 |
  |
Program 1 due
Program 2 assigned
Non-turn-in writing exercises 1 assigned |
3 |
15 |
Recursion |
|
C++ ch8 Math Ch6.1-6.3 |
|
|
17 |
Recursion (continued) |
Lab work 3 |
|
Program 2 due Program 3 assigned |
4 |
22 |
Induction |
Exercise 1 |
Math 3.2,3.3,3.5 |
|
|
24 |
Sorting algorithms |
Quiz 1 |
C++ ch9, Math 2.1,3.5 |
|
5 |
29 |
Sorting algorithms (continued) |
Lab work 4 |
|
Program 3 due Program 4 assigned |
|
31 |
Midterm exam |
  |
|
|
6 |
Nov 5 |
Linked lists |
  |
C++ ch17 |
|
|
7 |
Linked lists (continued)
| Lab work 5 |
|
Program 4 due Program 5 assigned |
7 |
12 |
no school - holiday |
  |
  |
|
|
14 |
Stacks and compilers |
Lab work 6 |
C++ ch12 |
Program 5 due Program 6 assigned |
8 |
19 |
Queues |
  |
C++ ch16 |
|
|
21 |
Queues (continued) |
Lab work 7 |
|
Program 6 due Program 7 assigned |
9 |
26 |
Propositions |
Exercise 2 |
Math ch1.1,1.2 |
Non-turnin writing exercise 2 assigned |
|
28 |
Quantifiers |
Quiz 2 Exercise 3 |
Math ch1.3,1.4 |
Non-turnin writing exercise 3 assigned |
10 |
Dec 3 |
Proofs |
Quiz 3 Exercise 4 |
Math ch1.5,1.7,3.1 |
Non-turnin writing exercise 4 assigned |
|
5 |
Review and wrap-up |
Quiz 4 |
|
Program 7 due |
11 |
10 |
Final exam |
|
|
|