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.
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 Friday, 1 February 2013, due Friday, 8 February 2013.
If you have not already done so, create a Soureforge account for
yourself and a Google Sites account for yourself to have reliable places
to post work for this course on the web.
Get your text books.
Read the relevant links of the course syllabus web page.
As an exercise in programming, design and implement a program to
take an arbitrary set of three-dimensional coordinates and find
which one of those points is close to a given probe point. Do your
first implementation in whatever programming language you know best.
Test your implementation by generating 1 million random points against
which to probe and 1000 randomly generated probe points. Worry
about how to tell if your program is working correctly.
After you get your first version of the above program working, rewrite
it in a different language.
Form a study group.
Prepare a proposal for the general thread of topics you will work on and
and the first two projects you will tackle.
Assignment #2, assigned Friday, 8 February 2013, due Friday, 15 February 2013.
You should have settled on your thread for programming tasks for the
semester and have chosen your first programming task for presentation.
Prepare a first draft of your web page of that presentation on or before 12 February
2013 and send that URL in an email to your instructor. Considering the instructor's
comments, prepare an updated presentation as a web page and send that URL
to the instructor in an email prior to the quiz on 15 February 2013.
Review the Java, C and C++ texts and prepare a comparison of the similarities
and differences among the languages as a web page you will be prepared to
discuss during the next quiz. Email the URL of that web page to the instructor
by 15 February 2013.
Read the relevant links of the course syllabus web page.
You will need to use HTML a great deal, both the prototype screen images for program
and as an essential I/O tool for real applications. The next reading and quizzes you
will do will help to give you a solid grounding in HTML. Pay careful attention.
Read the Schafer text through Chapter 18.
Continuing the exercise in programming to design and implement a program to
take an arbitrary set of three-dimensional coordinates and find
which one of those points is close to a given probe point, redo the program you
did last time in a third different language from the ones you used last time.
Test your implementation by generating 1 million random points against
which to probe and 1000 randomly generated probe points. Worry
about how to tell if your program is working correctly. Instrument all three
programs to allow you to do a meaningful comparison of the performance
of implementations in the three different languages.
Take whichever one of the three versions of the program showed the
best performance, reimplement using the NearTree package from
sourceforge
and compare performace of the NearTree version with your three versions.
Prepare an analysis as a web page and send the URL to the instructor
prior to the next quiz. If you are unable to match NearTree to your
best performing version, match it to one of the others. You may have
trouble finishing this task by 15 February. In that case, make as much
progress as you can and report that progress on the web page, with special
attention on the issues that hold you up.
Assignment #3, assigned Friday, 15 February 2013, due Friday, 22 February 2013.
If you did not specify your thread of programming tasks and do your
first presentation, your contact the instructor for how to
catch up. If you have not contacted the instructor by Monday, 18 February
2012 and settled on something else, your assigned thread is molecular
graphics and your first project is a PDB molecule viewer in Java.
In any case you must catch up on the presentaion you owe from the
previous assignment no later than Tuesday, 19 February 2013.
Whether you have selected your thread of programming tasks or not,
you are to dummy up the output and input of your first program and
make user external documents, lay out the details of how you will
code this and post this information as a coherent presentation to your
assignments web site.
At the same time prepare a presentation on the next topic in your thread
and send a the URL of a first draft of that second web page to the instructor
no later than Tuesday, 19 February 2013.
Redo your review the Java, C and C++ texts and prepare a comparison of the similarities
and differences among the languages as a web page you will be prepared to
discuss during the next quiz. Email the URL of that web page to the instructor
by 22 February 2013.
Read the Schafer text through the end.
Continuing the exercise in programming to design and implement a program
to take an arbitrary set of three-dimensional coordinates and find which one
of those points is close to a given probe point, do a brute-force implementation
in Perl and compare it to a C++ implementation using NearTree. Carefully
Analyse the differences in performance. Test your implementation by generating
1 million random points against which to probe and 1000 randomly generated
probe points. Worry about how to tell if your program is working correctly.
Assignment #4, assigned Friday, 22 February 2013, due Friday, 1 March 2013.
Some of you are seriously behind in doing the work for this course.
The midterm is nearly upon us. It would be a very good idea to get moving on
the programming assignments and readings for this course.
Everybody now either selected a thread or had one assigned.
You are to finish a first working copy of your first program and
you are to dummy up the output and input of your second program and
make user external documents, lay out the details of how you will
code this and post this information as a coherent presentation to your
assignments web site.
At the same time prepare a presentation on the next topic in your thread
and send the URL of a first draft of that third web page to the instructor
no later than Tuesday, 26 February 2013.
Read the Mednieks text (yes, all of it).
Continuing the exercise in programming to design and implement a program to take an arbitrary
set of three-dimensional coordinates and find which one of those points is close to a given probe
point, take both the brute-force implementation in Perl and the C++ implementation using NearTree
and try each on a cluster of 1,000,000 points with 1 of (0,0,0) and 10 points within 1 of
(1000000000,0,0) using 1000 random probe points within a sphere of radius 1000 around
(500000000,0,0). Redo the test using 1000 random probe points within a sphere of radius 1000 around
(0,0,0). Redo the test using 1000 randome probe points witin a radius of 1000 around
(1000000000,0,0). Carefully Analyse the differences in performance. Worry about how to tell if your
program is working correctly.
Assignment #5, assigned Friday, 1 March 2013, due Friday, 8 March 2013.
Prepare a presentation on the 4th topic in your thread
and send the URL of a first draft of that 4th web page to the instructor
no later than Tuesday, 5 March 2013.
Read the Chassell text (yes, all of it). Get yourself a copy of emacs and
install it. Pick a way in which you would like to customize emacs and send the
instructor yor proposal.
Continuing the exercise in programming to design and implement a program to
take an arbitrary set of three-dimensional coordinates and find which one of
those points is close to a given probe point, take both the brute-force
implementation in Perl and the C++ implementation using NearTree and try each on
a cluster of 1,000,000 points arranged in a uniform grid with spacing 100.
Midterm:
In response to scheduling difficulties for several students, we have relaxed
the time constraints for taking the midterm. The midterm may be
taken at any time between Monday 11 March 2013 and 9 am on Monday, 18 March 2013.
Assignment #6, assigned Friday, 15 March 2013, due Friday, 22 March 2013.
Prepare a presentation on the 5th topic in your thread
and send the URL of a first draft of that 5th web page to the instructor
no later than Tuesday, 19 March 2013. This will be the last of
the assigned topics, except for your emacs Lisp code and your portfolio
project, both of which you should get started on.
To finish the exercise in programming to design and implement a
program to take an arbitrary set of three-dimensional coordinates and
find which one of those points is close to a given probe point prepare
your one best final version of the program and provide in the comments
of the code a clear rationale for the design choices you have made.
Post the a clean draft on your google sites web site with an appropriate open
source license no later than 22 March 2013 for the instructor to
comment on immediately after the break.
Go to the
Boston Preliminary Programming Contest (BOSPRE) Practice Facility
http://www.seas.harvard.edu/hc3/bospre/facility/ and do
isa monotonic motion opnum palin passwords paxos prooflabel.
For this course you may use any language you wish, but to use the
autojudge you will need to use java, C or C++. There are more
of these problems, but to allow you time to finish the assigned
work within the semester, this is the last group for which you
are responsible.
Assignment #7, assigned Friday, 22 March 2013, due Friday, 5 April 2013.
Whether you sent the instructor yourt emacs proposal or not, it
is time to do a customization of Emacs in Lisp. If you have
not selected a topic, you are to go to
http://emacswiki.org/emacs/PythonProgrammingInEmacs and
make emacs aware of the differences between python 2.5 and 2.7.2
and provide support for back-conversion of code that uses 2.7.2
features so that it will run under python 2.5. Post the resulting
package on your web site and email the URL to the instructor.
Prepare a detailed blog entry on the status of your portfolio
project and email the URL to the instructor.
Clean up and finish the web pages for your thread of
programming topics if you have not already done so, update your
blog with the status and email the URL to the instructor.
Clean up whatever parts of the BOSPRE programs you are
able to do, and update your blog with a discussion of your
successes and failures. Include in the discussion a priority
ordered list of programs you had difficulty with that we should
discss. Email to URL to the instructor.
Assignment #8, assigned Friday, 5 April 2013, due Friday, 12 April 2013.
If you have not done so, it is past time to
cleanup up and finish all your projects other
than your portfolio project so that you can focus on that.
Contact the instructor about any and all difficulties your have
in finishing those projects.
Prepare a detailed blog entry on the status of your portfolio
project and email the URL to the instructor.
Prepare a user document for your portfolio project, add
it to your portfolio web site and email the URL to the instructor.
Assignment #9, assigned Friday, 12 April 2013, due Friday, 19 April 2013.
There is very little time left to complete the work for this
course within the semester, so, unless you are going to be able to
catch up on a huge volume of work immediately, it is time to plan
for an incomplete so you can complete the work for this course
over the summer. Contact the instructor to make the necessary
arrangements.
Assignment #10, assigned Friday, 19 April 2013, due Friday, 26 April 2013.
If you are going to complete this course this semester, you must
turn in at least 12 of the BOSPRE programs by 3 May 2013 and be ready
to answer questions on each and every one of those programs on this
final examination. It is OK to work collaboratively with others
on generating these solutions, but you must personally know and
understand those solution.
Final:
The Final for this course must be taken no later than 12 May 2013
under Skype supervision. However, the final itself is already posted, and you
may start preparing your answers now. Part of this final requires a discussion of the
questions with the instructor via Skype.
Unless you have already scheduled a different time with the instructor, you must be on Skype between
8 and 10 pm on Monday, 6 May. As just noted, you may start working on the final now, preparing
answers that you will submit and discuss during the Skype session. You must be able to
discuss everything you submit in the exam with the instructor, so make certain that you
know and understand everything you write before you submit it.
I am dealing with a family medical emergency, so alternate time slots to the Monday 8 -- 10 pm
Skype session will be very limited. Look at the questions and contact me via email
(yayahjb@gmail.com) immediately if you will not be able to make the Monday window.
If you cannot work within this time frame, a space has been provided on the final to request
an incomplete, but you are advised to look at all the questions now to gain an understanding
of the work you will need to do to finish this course eventually.