All assignments are to be submitted primarily as web pages or blog entries, giving the
URL as the answer to a quiz question, or by plain text 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,
CD or thumb drives.
Students should check this page frequently for updates.
Assignment #1, assigned Tuesday, 3 September 2013, due Tuesday, 17 September 2011.
Sign up for a Skype account. A free Skype account is
sufficient. You do not need to pay for a premium account. Send a Skype contact request
to the instructor (yayahjb).
Even if you have an email account, sign up for a Google gmail
account and email your gmail email address to the instructor (yayahjb at gmail dot com).
Sign up for a Google blogspot account that you
will use for this course. The name of the blog should be a combination of your gmail
name and the course name in that order. For example, if your gmail address is
mugwump86@gmail.com, the name of your blog for this course should be mugwump86CSC2025F13.blogspot.com.
Be sure to set up your blog so that the instructor has read access.
Sign up for a Google sites account, and create two
sites, one for this course in particular using the same naming scheme as for your course blog,
and one named by combining your gmail name with "Portfolio" to be used for your portfolio.
Create a working java development environment on your computer and create a
working python development environment on your computer. Search on the
web for the necessary information on how to do that if needed. You are intentionally
not being given step-by-step instructions, but if you get stuck, you should contact
the instructor via email (yayahjb at gmail dot com) or Skype (yayahjb).
To help you get started on the course the instructor will be available for
a group Skype meeting at 9 pm on Tuesday, 3 September 2013.
This is a very large assignment. You are not likely to be able to do all of it
by 17 September, but the more of it you do, the better you will be able to do on
the first quiz, and the better prepared you will be for the rest of the course.
This material is essential.
You should get your textbooks by Tuesday, 10 September 2013, and have read chapters 1, 2
and 3 of Aho et al. (pp. 1 --93, through trees) and chapters 1, 2 and 3 of McAllister (pp. 1 --
172, through Stacks).
Prepare enough material on answers to all the questions
on pages 53-57 of McAllister so that if you were given a quiz asking for the answer to
any of those questions you would be able to answer. This material belongs in
your notebook. Put a detailed discussion of
problem 34 on page 55 in
your notebook with code, if possible.
Prepare enough material on the questions
on pages 31-35 of Aho et al.
Put notes on problem 1.1 in your notebook or on your blog.
Prepare enough material on answers to all the questions
on pages 120-123 of McAllister 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 21 on page 122 in
your notebook with code, if possible. Have something on each question
prepared by Tuesday.
Prepare enough material on the questions
on pages 70-74 of Aho et al. so that you can actively participate in a
Skype discussion
of the issues involved. Put notes on problem 2.3 in your notebook.
Prepare enough material on answers to all the questions
on pages 170-172 of McAllister 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.19 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
if you were given a quiz asking for the answer
to any of those questions you would be able to answer.
Put notes on problem 3.17 in your notebook.
Using your java development environment, prepare your own implementation
of a stack, of a queue and of a linked list. Do the same in your python development
environment. In each case, prepare a test
program. Discuss your progress in your blog and post the code on your homework
web site.
Do careful research on the web on the doctine of fair use, especially
in relationship to the Digital Millenium Copyright Act. Be prepared to answer
a question on this topic on the next quiz.
The best way to learn to program is to program. So you need to start now on
your portfolio project for this course. The minimum you need to do is to create
your own complex game-tree-based game in both 2-player and player-against computer
form. You are permitted to propose a more challenging project, for example,
the implementation of a new computer language translator. I would
suggest
looking at
www.sites.google.com/site/nexuscbf/home and
www.iucr.org/resources/cif/ddl/ddlm for material relating to some new developments
in bioinformatics. You could propose a project involving creation of a compiler for
DDLm. This involves many complex data structures and is much harder than implementing
your own game.
Whatever you do for your portfolio project must be open source. You can do open source
code on your own web site, but it can be very helpful to use the support services provided
by sourceforge (sf.net), github (github.com) or Google code (code.google.com) useful.
Send email or a Skype IM to the instructor with your preliminary project proposal
Assignment #3, assigned Saturday, 28 September 2013, due Tuesday, 8
October 2013.
Most students did inadequate work on assignment 2. Please redo
assignment 2 in addition to the work for this assignment. The unfortunate
reality is that failing to do the work that had to be done at the beginning
of the course just means that there is jusy that much more work to be done
at the end of the course, and if you push things too far, you will be
unable to complete the work in the semester and have to take an incomplete.
There will be a group video Skype session at 9 pm on Tuesday, 1 October
when you must settle the open issues relating to your portfolio
project and get moving forward on it. There will be another group video
Skype session at 9 pm on Tuesday, 8 October 2013, when you must be done with
all of this double assignment, incuding the quiz.
For Tuesday, 8 October 2013 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 and chapter 4 in the McAllister book.
Prepare enough material on the exercises on pages 226-229
of McAllister 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.28 in
your notebook with code, if possible. Have something on each question
prepared by Tuesday, 8 October 2013.
Do Quiz 3 on or before Tuesday, 8 October 2013.
The quiz must be done before the group Skype session.
Assignment #4, assigned Tuesday, 8 October 2013, due Tuesday, 15
October 2013
Read chapter 5 in the McAllister book. Be certain to work
on the problems. You will have a quiz question requiring the
programming of code using hash tables.
Reread chapters 1-3 of Aho et al. and read chapter 4.
Be prepared to work on hash tables.
Do Quiz 4 on or before Tuesday, 15 October 2013.
The quiz must be done before the group Skype session.
This will is a particularly difficult quiz to help decide on midterm warnings.
Do the best you can, and be prepared to discuss particular problems during the
Skype session.
Assignment #5, assigned Tuesday, 15 October 2013, due Tuesday, 22
October 2013
Read chapter 6 in the McAllister book. Be certain to work
on the problems. You will have a quiz question requiring the
programming of code using recursion.
Quiz 5 will be posted on or before 20 October. You will be required
to do some serious programming for this quiz, so it will be posted 2 days
early to give you time to code properly.
The group Skype session on 22 October 2013 will run from 9 pm until 10:30 pm to allow
sufficient time for each of you to discuss both your protfolio project and to discuss your
efforts at the programming question on the quiz. Be sure to have a coherent 5 minute
presentation ready.
Assignment #6, assigned Tuesday, 22 October 2013, due Tuesday, 29
October 2013
Reread chapters 1-3 in Aho et al.
Read chapter 7 in the McAllister book. Be certain to work
on the problems. You will have a quiz question requiring the
programming of code using trees.
The group Skype session on 29 October 2013 will run from 9 pm until 10:30 pm to allow
sufficient time for each of you to discuss both your protfolio project and to discuss your
efforts at the programming question on the quiz. Be sure to have a coherent 5 minute
presentation ready.
Assignment #7, assigned Tuesday, 29 October 2013, due Wednesday, 6
November 2013
Read chapters 5 and 8 in Aho et al.
Read chapter 8 in the McAllister book. Be certain to work
on the problems. You will have another quiz question requiring the
programming of code for sorting.
Make notes in your blog or 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.
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. Do not use any built-in java class
to do the work. Roll your own code.
Do Quiz 7 on or before Wednesday, 6 November 2013.
Due to election day, there will not be a group Skype session on 5 November. If you are
eligible to vote, please do so. It is your civic duty.
Assignment #8, assigned Wednesday, 6 November 2013, due Tuesday, 12
November 2013
We will have a group Skype session on Tuesday, 12 November 2013.
Read Chapter 9 in McAllister and chapters 6 and 7 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
java TreeSet class to do your sorting and experimentally compare the timing to your prior version.
Assignment #9, assigned Tuesday, 12 November 2013, due Tuesday, 19
November 2013
We will have a group Skype session on Tuesday, 19 November 2013.
Prepare notes in your notebook on finding shortest paths in graphs
Design and implement a java
program to read a list of nodes, edges and edge lengths
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, 19 November 2013, due Tuesday, 3
December 2013
We will have a group Skype session on Tuesday, 26 November 2013.
This is the last assignment of the semester. There will be no opportunity to turn in any of
this material late, and still have it included in the grade for this semester. If you are still
behind on your work for the semester at this point, you should discuss an incomplete with the
instructor.
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
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.
Projects: You will present your projects on Tuesday, 3 December 2013. Each project
must post all the materials in their portfolio web site, and prepare a coherent, well organized
15 minute presentation
that focuses on a demonstrating clear understanding of the data structures involved, the alternatives
that could have been used, and the implications for timing and space use.
Final: There will be an open notes, open computer, closed book final via Skype from
8-10 pm on Tuesday, 10 December 2013. If you have a conflict at that time, please contact the
instructor to schedule an alternative date prior to that. You have until Thursday, 12 December
to submit any further materials to be considered for grading.