CSS 342: Mathematical Principles of Computing - Assignments


Eclipse

Eclipse and its corresponding cmpiler are used for laboratory work and homework grading. Although you may use any operating systems when working on your homework assignments, your final programs must compile and run on Eclipse and its corresponding compiler, (i.e., MinGW on Windows, Xcode on Mac OS, or g++ on Linux ).

Please first install the compiler corresponding to your platform, (i.e., operating system): MinGW on Windows or Xcode on Mac OS. Note that Linux has already installed g++. Also note that, if you install MinGW, you must choose at least g++ and make as your installation option. Thereafter, download Eclipse on your laptop or notebook computer, and bring it to the classroom whenever the class has a post-lecture laboratory session. There, you will be given a simple programming problem that would help you start working on the following homework assignment.

CSS Linux Laboratories

CSS Linux Laboratory at UW1-320 is available to all CSS students. You should be able to enter those two laboratories with your student ID card. If not, please visit the CSS main office for activating your ID card. To use any of these machines, please login with your UWnetID and the corresponding password. If you cannot login, please contact UWB Information Technology. At present, I am asking the Information Technology to install Eclipse on these machines. For time being, you would like to install Eclipse on your own home directory if you work on campus. (Note again that Linux machines have installed g++.) If you want to compile and run your program without Eclipse, just simply type as follows from the Linux command line in the directory where your programs are stored:

 g++ *.cpp
 ./a.out

You can also remotely login any of UW1-320 Linux machines. Use ssh and establish a connection to uw1-320-lab.uwb.edu. You will automatically get one of the lab machines and see your home directory immediately.

To transfer files to the LAB320 file server, use sftp and establish a connection to uw1-320-lab.uwb.edu, or use scp at a LAB machine, so that files are copied from the outside to the LAB320 machine. The following example copies a file "file.cpp" from dante to a LAB machine.

 scp mfukuda@dante.u.washington.edu:file.java .

Assignments

  1. Program 1 exercises C++ operator overloading.
  2. Program 2 conducts empirical analysis on the execution complexity of algorithms such as Sieve of Eratosthenes, Euclid's Algorithm, and Integer Factorization.
  3. Program 3 draws a fractal figure using recursion.
  4. Program 4 digests the key ideas of merge/quick sort algorithms through making some improvements on them.
  5. Program 5 improves list-traversing algorithm with move-to-front, transpose heuristics, and skip lists.
  6. Program 6 uses a stack to implement an interpreter for an arithmetic expression.
  7. Program 7 implements a very long integer class using Deque.

Submissions

Grading

Grading is based on the grading guide of each programming assignment that you can locate at the bottom of each assignment's web site. In general, grading covers documentation, code correctness, and code organization:
Criteria Percentage
Documentation of your report including explanations, illustrations, results, and output consideration 20%
Correctness of your program (Tar extraction errors and compilation errors will receive no points for this criterion. Run-time errors and/or incorrect answers will result in a significant number of points being deduced from your grade). Also reassure that you have used the algorithm as specified in each assignment. 60%
Organization of your program (modularization, coding style, and an appropriate amount of comments). 20%

Important Note

Once again, follow "what to turn in" and "grading guide" in each assignment's web site. If you still don't know what to turn in, email me at <mfukuda@u.washington.edu> before each due date. No execuse such as "I didn't know what I was supposed to turn in"