All assignments are to be submitted as text-only email or posted on the web and submitted by email
containing the URL of the
assignment to:
with absolutely no attachments. No assignments will be accepted late.
No assignments will be accepted on paper. No assignments will be accepted on diskettes.
An
assignment is late if the email is sent after the start of the class at which it is due.
The grade for the assignment will be sent back to the email address from which the
assignment email was sent. In the case of group assignments in which multiple students
are involved, one student should be the sender of the email and the other students should
be listed both in the email "CC:" list and in the body of the message.
Students should check this page frequently for updates.
Assignment #1, assigned Tuesday, 3 February 2004, due Thursday, 5 February 2004
and Tuesday, 10 February 2004.
Using your account on arcib.dowling.edu, write and test a program that will
write the phrase "Hello from <your_name>!!!!", where "<your_name>"
is replaced
by your first
name. Post both the source and the executable in your account in a directory
public_html/CSC1071S04/Assignment1/ on arcib.dowling.edu. You may use java, C
or C++. Send email to
the instructor when your posting is ready for review, no later than the start of class
on Thursday, 5 February 2004.
You must have your notebook by Thursday, 5 February 2004. Your notebook must
contain notes on your experience setting yourself up to do programming on arcib.dowling.edu
and in doing the first part of this assignment.
You must have your textbooks by Tuesday, 10 February 2004, and have read chapter 1
of Aho et al., and chapter 1 of Weiss.
Prepare enough material on answers to all the questions
on pages 23-25 of Weiss so that if you were given a quiz asking for the answer to
any of those questions you would be able to answer. Put a detailed discussion of problem 1.20 in
your notebook with code, if possible.
Prepare enough material on the questions
on pages 31-35 of Aho et al. so that you can actively participate in a classroom discussion
of the issues involved. Put notes on problem 1.1 in your notebook.
Assignment #2, assigned Tuesday, 10 February 2004, due Thursday, 12
Feburary 2004
and Tuesday, 17 February 2004.
Write a carefully researched essay on the ethics of downloading
music from the web, and post it on your web site as "Music_Ethics.html". Be
sure to cite recent news articles. Be sure to credit your sources. Be sure to
use quotation marks and cite your source on any words for which you are not
the original author. DO NOT USE WORD TO FORMAT YOUR TEXT. The file must either
be simple text or HTML that you edited with an ordinary text editor such as
pico. Send an email with the URL of your essay before the start of class on
Tuesday. The essay will not be accepted late. The essay will not be accepted
on paper. The essay will not be accepted in the text of the email message.
The essay is due on Tuesday, 17 February 2004 (revised from Thursday)..
Read chapter 2 in each text book.
Prepare enough material on answers to all the questions
on pages 59-60 of Weiss so that if you were given a quiz asking for the answer
to
any of those questions you would be able to answer. Put a detailed
discussion of problem 2.10 in
your notebook with code, if possible. Have something on each question
prepared by Thursday.
Prepare enough material on the questions
on pages 70-74 of Aho et al. so that you can actively participate in a
classroom discussion
of the issues involved. Put notes on problem 2.3 in your notebook.
Assignment #3, assigned Tuesday, 17 February 2004, due Tuesday, 24
February 2004.
For Tuesday, write a "think piece" essay on the question of
optimizing
the performance of code on computers. The question is not whether
there are techniques to reduce execution time or reduce use of memory.
The question is whether or when such techniques should be applied,
and what are the advantages and disadvantages of doing so. You will be graded not on how well you
agree
with the texts or the instructor, but on how coherently you express your
ideas. Near the end of the
semester you will be asked to write a second essay on the same subject, and you
may find it interesting
to see how much or how little your ideas on the subject change as you gain
experience with data
structures and algorithms.
Be sure to credit your sources. Be sure to use quotation marks and cite your
source on any words for
which you are not the original author. DO NOT USE WORD TO FORMAT YOUR TEXT.
The file must either be
simple text or HTML that you edited with an ordinary text editor such as pico.
Send an email with the URL
of your essay before the start of class on Tuesday. The essay will not be
accepted late. The essay will
not be accepted on paper. The essay will not be accepted in the text of the
email message.
Read chapter 3 in each text book.
Prepare enough material on answers to all the questions
on pages 85-88 of Weiss so that if you were given a quiz asking for the answer
to
any of those questions you would be able to answer. Put a detailed
discussion of problem 3.17 in
your notebook with code, if possible. Have something on each question
prepared by Tuesday.
Prepare enough material on the questions
on pages 103-106 of Aho et al. so that you can actively participate in a
classroom discussion
of the issues involved. Put notes on problem 3.17 in your notebook.
Assignment #4, assigned Tuesday, 24 February 2004, due Thursday, 26
February 2004
and Tuesday, 2 March 2004.
Read chapter 4 in Weiss book.
Prepare enough material on answers to all the "in short" questions
and all the other odd-numbered questions
on pages 140-144 of Weiss so that if you were given a quiz asking for the answer
to
any of those questions you would be able to answer. Put a detailed
discussion of problem 4.33 in
your notebook with code, if possible. Have something on each question
prepared by Thursday.
Assignment #5, assigned Tuesday, 2 March 2004, due Thursday, 4
March 2004
and Tuesday, 9 March 2004.
Reread chapter 1 of Aho, et al.
Read chapter 5 in Weiss book.
Prepare enough material on answers to all the "in short" questions
and all the other odd-numbered questions
on pages 176-181 of Weiss so that if you were given a quiz asking for the answer
to
any of those questions you would be able to answer. Put a detailed
discussion of problem 5.27 in
your notebook with code, if possible. Have something on each question
prepared by Thursday.
Term project selections must be made by Thursday, 4 March 2004.
There will be an in-class midterm on Thursday, 11 March 2004.
Assignment #6, assigned Tuesday, 16 March 2004, due Thursday, 18
March 2004
and Tuesday, 23 March 2004.
Read chapters 6 and 7 in the Weiss book. Reread Chapters 2 and 3
in Aho.
Make notes in your notebook about sorting, and consider the question
as to the relevance of recursion to sorting. Add notes on the use of
trees in sorting. Be prepared to discuss these issues in class on
Thursday.
Design, document, write and test a java program to read an
arbitrary text file, extract all the words from the file, discarding
punctuation, sort
the words in case-insentitive alphabetic order, discarding duplicates
but counting them and print the results, one word per line with counts
of the number of occurances.
Assignment #7, assigned Tuesday, 23 March 2004,
due
Tuesday, 30 March 2004.
Read chapters 8 and 9 in the Weiss book. Read chapter 8
in Aho et al.
Review and revise the notes in your notebook about sorting, and
answer the question
as to the relevance of recursion to sorting. Add notes on the use of
trees in sorting with an eye on recursion. Be prepared to discuss these
issues in class on
Tuesday.
Once again, design, document, write and test a java program to read
an
arbitrary text file, extract all the words from the file, discarding
punctuation, sort
the words in case-insentitive alphabetic order, discarding duplicates
but counting them and print the results, one word per line with counts
of the number of occurances. In this version use the TreeSet class to
do your sorting and experimentally compare the timing to your prior
version.
Assignment #8, assigned Tuesday, 30 March 2004,
due
Tuesday, 13 April 2004.
Reread chapter 9 in the Weiss book.
Make notes in your notebook about generating and using
pseudo-random numbers.
Once last time, design, document, write and test a java program to read
an
arbitrary text file, extract all the words from the file, discarding
punctuation, sort
the words in case-insentitive alphabetic order, discarding duplicates
but counting them and print the results, one word per line with counts
of the number of occurances. In this version use the TreeSet class to
do your sorting. Add a loop to repeatedly rerandomize the data and then
resort it, randomizing the amount of data being sorted. Try to
time your code internally with System.currentTimeMillis(). Be prepared
to discuss what is wrong with this approach and what might
be better. Post this version of the code on your web site for grading.
Email the URL.
Assignment #9, assigned Tuesday, 13 April 2004,
due
Tuesday, 20 April 2004.
Read chapters 5 and 6 of Aho et al.
Prepare notes in your notebook on finding shortest paths in
graphs
In collaboration with your classmates design and implement a
java program to read a list of nodes and edges forming a graph from a file,
to read a list of distinguished nodes from another file, and to compute
all the shortest paths in the graph between all pairs of distinguished
nodes.
Assignment #10, assigned Tuesday, 20 April 2004,
due
Thursday, 22 April 2003 and Tuesday 27 April 2004.
This is the last assignment of the semester. There will be no
opportunity to turn in any of this material late.
On Thursday you will do your project presentations. Each person
involved must present a significant share of the material both
on the design issues and on the implementation. You may use
the blackboard, the computer projector or the overhead projector.
You should show the code running on the overhead projector.
You will be graded on both the content and the quality of the
presentation.
For Tuesday, rewrite your "think piece" essay on the question of
optimizing
the performance of code on computers. The question is not whether
there are techniques to reduce execution time or reduce use of memory.
The question is whether or when such techniques should be applied,
and what are the advantages and disadvantages of doing so. You will be
graded not on how well you
agree
with the texts or the instructor, but on how coherently you express your
ideas. However, In this
version of the essay
you must explain how your ideas relate to what you have done and learned in this course. It is OK
if your ideas have not changed, but you must show some awareness what can be done to
optimize code by bettter use of data structures.
Be sure to credit your sources. Be sure to use quotation marks and cite your source on any words for
which you are not the original author. DO NOT USE WORD TO FORMAT YOUR TEXT.
The file must either be
simple text or HTML that you edited with an ordinary text editor such as pico.
Send an email with the URL
of your essay before the start of class on Thursday. The essay will not be
accepted late. The essay will
not be accepted on paper. The essay will not be accepted in the text of the email message.
Read chapter 21 of Weiss
Prepare summary notes in your notebook on graphs, trees, lists and
arrays and the relationships among these data structures.
In collaboration with your classmates design and implement a
java program to read an arbitrary number of files of strings,
one string per line to create a single merged output file
with those strings sorted using the collating sequence AaBbCc...
You may create temporary files if you need them. This is a
very dificult problem. You are required to complete
the design to get any credit at all. If you cannot do the
complete implementation, you must at least do the implementation
for sorting and merging three files using the ordinary String
comparison instead of the stated collating sequence. Post your
common answer on each of your web sites no later than the start
of class on Thursday. Be prepared to discuss the issues in
class and to go through your design and code.