Once you have acquired basic skills in working with computers,
the best way to sharpen those skills and to learn how to solve
problems using computers is by working on demanding projects
which draw on the skills that you have and which force you to
acquire new knowledge and skills.
There are two major types of projects: development projects and
research projects. Development projects are ones
in which you design and implement a solution to a problem
for which the tools and techniques needed for solution
are well understood before undertaking the project. Research
projects are ones in which you define new problems and
in which you discover or develop new tools
and techniques needed to find solutions. In Computer
Science the line between research and development
can be blurry, but the basic idea is that in
research we find or develop something truly novel,
while in development we refine things that are already
reasonably well understood. (See
www.epa.gov/ogd/recipient/glossary.htm.)
This course is oriented around projects. In the real world, when
you work on a real project, you have to do a lot of work to
figure out precisely what you will be doing and to
gather the resources you will need to accomplish your
tasks. Therefore, for many of the assignment in this
course you will not be told everything you need
to know to complete them. Search on the web. Talk
to your classmates and other people. Put a lot of time
and energy into the work on your projects.
Students will be given three weeks to establish the infrastructure they
need to work on projects, to form groups and to prepare
detailed project proposals. The rest of the academic year
will be spent turning those initial proposals into
sound completed projects and in devising new projects.
Each student will take the lead on at least one distinct
project during the academic year. A student who
is in the Project-Oriented Computer Science course (as
opposed to the Project-oriented Computer Science
Research course) must be a leader on a major
distributed application development project
and a leader or active team member on at
least two additional projects. A students who is in
âthe Project-Oriented Computer Science Research course
will take the lead on a major research project and must be a
consultant to at least one other project.
All materials produced for projects in this course
must be made available on the web under open source
licenses, preferably the GPL.
Assignments
Return to this page often to find new assignments and clarifications
to old assignments.
Acquire your text books, lab notebook, computer, disk and
other needed supplies.
Find the sourceforge web site and learn how to
start a project on sourceforge.
Establish a course web page in your account
on mcs.dowling.edu, with a link for a copy
of everything you put in your notebook as a blog. As you
create each project, you will establish a sourceforge
web page and add a link from your course web page to the
sourceforge web page.
Download and burn, or otherwise acquire CD's of
some open source unix evironment to use as a development
environment for your projects, and be prepared to discuss
your particular choice of software platform with your
classmates.
Find and read the GPL. Be prepared to discuss
it.
Discuss your ideas for projects with your
classmates and gather materials to use in presenting
at least two alternate project proposals.
You will start the work on the tasks specified
above in class, but you will not have enough time to
to the work properly unless you also devote several
hours outside of class.
You should now have your text books. Read them. You will be given
specific reading assignments to help to organize our discussions, but
you are responsible for reading widely and with a critical eye. For
each assigned reading, you are to prepare notes in your notebook
on what you have read and on how you would address the exercises
and problems you encounter. Those taking only POCS II and not POCS I
and others may have been through this or similar material before.
Those people are not excused from doing this work. Because
they have been through this material before, this should be
a review which goes very quickly for them.
Read Gustafson's SE through page 71 (chapters 1-4).
Read Brooks through page 50 (chapters 1-4).
Read Hubbard's Java through page 119 (chapters 1-5).
Prepare a solid, timed 15 minute presentation with
a web page (in your own account on mcs) and handout (6 copies)
introducing yourself and the projects you are considering.
Describe your skill and interests. Classify yourself as:
leader, follower, or lone wolf. Classify yourself as: Very organized,
somewhat organized, or not very organized. Classify yourself as: Highly
skilled with technology, somewhat skilled with technology, or not very
skilled with technology. Describe your project from the point of
view of users, saying what will be done for whom, and why this
work is needed. You are not to go into details of implementation at this
time.
Start building your development platform as soon as you have
enough pieces to get started. Keep detailed notes in you notebook
on what happens, and start or update your blog with this
information.
If you are in POCS II, read Valiela, chapters 1-4.
If you are just taking POCS II, you are still responsible for
having a solid knowledge of Software Engineering and of Java, so
you must be ready for quiz questions on these subjects.
Prepare a solid, timed 15 minute presentation of a needs analysis
and feasibility study of your project. You must include a brief
discussion of what the project is about (no more than 2 minutes),
and then spend half the remainder of your time showing whar role(s)
your project plays in what system(s), satisfying what needs for
what user(s). The remainder of your time should be spent
showing that there is highly likely to be a feasible way to
implement this project. This does not mean you need to have
a final design for your implementation of the project, just
that there is at least one practical way to implement it.
This is a very short time in which you will need to present
a great deal of technical material. You must organize your
material very carefully as a web presentation with a handout
and you must practice before hand, or you will fail to hit
your time mark. You need to have a sound idea (a model) of
the structure of your project around which to structure
your talk, but the model is just a means to the end: the
needs analysis and feasibility study.
Prepare a preliminary estimate of the infrastructure
you will need to do your project and start pulling the
pieces together. Update your blog with this information.
IMPORTANT NOTE: For Spring 2006 the POCS courses will run
50 minutes earlier: Tuesday 1:10 - 5:20, Thursday 3:30 - 5:20.
There are no classes at Dowling on Monday 3 October 2005, Tuesday
4 October 2005, and until 5:00 pm on Wednesday 5 October 2005. Therefore
the next assignment is due on Thursday, 6 October.
Assignment #4, assigned Tuesday, 27Sep 2005, due Thursday, 6 Oct
2005.
Read pages 85-137 (chapters 8-11) of Brooks.
Read pages 127-217 (chapters 9-14) of Gustafson.
Read Hubbard's Java 238-335 (chapters 10-14, App A and B).
Read Hubbard's C++ 1-155 (chapters 1-6)
If you are in POCS II, read Valiela, chapters 5-9.
If you are just taking POCS II, you are still responsible for
having a solid knowledge of Software Engineering and of Java, so
you must be ready for quiz questions on these subjects.
Prepare a solid, timed 15 minute presentation of a preliminary
system design for your project with detailed tasking and a
preliminary timeline. You must have the members of your
team identified and each task must be assigned to appropriate
people. You must have your sourceforge project established.
There are no classes at Dowling after 5 pm on Wednesday, 12
October 2005 and all day Thursday, 13 October 2005
Assignment #5, assigned Thursday, 6 Oct 2005, due Tuesday, 18 Oct
2005.
Read pages 141-206 (chapters 12-16) of Brooks.
Read Hubbard's C++ 156-341 (chapters 7-15)
Prepare a dense, detailed web page comparing java and C++ and explaining the
important differences, and add it to your web page. Be prepared to present any
or all of this material in class, referring only to this web page. Email the URL
of this web page to the instructor.
If you are only in POCS II, prepare a web page reviewing Valiela. Email
the URL of this web page to the instructor.
Prepare a solid, timed 15 minute presentation of an updated
system design for your project with detailed tasking and an
updated timeline showing progress and slipped tasks.
Assignment #6, assigned Tuesday, 18 October 2005, due Tuesday,
25 October 2005.
Be prepared for your oral midterm project status presentations starting
on Tuesday 25 October 2005. Each of you will do a timed 20 minute
presentation, following by a 10 minute question and answer period.
You must use your web site on arcib.dowling.edu and your web site
on sourceforge and your notebook as the only reference materials
for your presentations. You may not make any use of any
other web sites. You must come with 6 paper copies of a
well organized briefing book on paper, one for the instructor,
one for each of your classmates and one for yourself. The briefing
book should give the URLs from arcib and sourceforge to which
the reader should refer for more information. The arcib web site
must contain a complete and current blog giving the both the
history and current status of the project. The presentation must
include the following elements:
A brief, 2 minute overview of the user external functionality
of the project.
Directions on where to find the user manual both as a web page
and as a downloadable PDF, and a brief, 1 minute discussion
of the stucture of the user documentation.
A solid, 5 minute or less presentation of the system design
showing the major development tasks to be performed with
personneol assignments.
A solid ten minute presentation of the original project
timeline, the current best revisions to the timeline, and
the status of all tasks.
A 2 minute summary of your presentation along with
credits and references as appropriate.
The presentation may have started its life as a powerpoint
presentation or the like, but what you present must
be a web page that can be viewed using any standard
browser under Linux, with a downloadable copy of
your briefing book as a PDF.
Read pages 207-292 (chapters 17-19 and the epilogue) of Brooks.
Read Gottfried's C 1-240 (chapters 1-8)
Start a dense, detailed web page comparing C and C++ and explaining the
important differences, and add it to your web page. After the midterm
and more reading in Gottfried, you will have to be prepared to present
this material in class, referring only to this web page. Email the URL
of this web page to the instructor. You need to prepare this page
even if you are only taking POCS II.
Whether you are in POCS I and II or just in POCS II, you must
learn to use TeX. Do a web seach on LaTeX, teTeX and on BibTex and
find out how to prepare a document using references in BibTeX format,
and make certqain you have the necessary software installed
in your development environment.
Do a thorough search for all the published literature relating
to your project and prepare an annotated bibliography. Add it to
your web page both as text and based on a BibTeX file. The text must
be created as a LaTeX document using the BibTeX file as the source
of the references presented.
If you are only taking POCS II, prepare a document in TeX
using the literature you gathered above discussing the major open
research issues relating to your project. These are not necessarily
issues that you will address in doing your project, but the
issues that create the context in which you are doing your
project.
Assignment #7, assigned Thursday, 27 October 2005, due Tuesday,
1 November 2005.
Read Gottfried's C 241-475 (chapters 9-14)
Finish your comparison web page of C and C++.
Put the fruits of your BibTeX effort into a web page and send the
URLs of your
in an email to the instructor. If your are only taking POCS II be sure to
include the document on open issues.
We will begin the seminar portion of the course with presentations
by members of the class comparing java, C and C++. Everyone will
speak on Tuesday.
Have your notebooks updated with notes on all your activities
related to this course (back to the beginning of the semester).
This will be graded next Tuesday. Remember, notebooks are 25%
of your grade. Failure to get a decent notebook started by next
week will cost you 12.5% of this semester's grade and 6.25% of
the overall grade for the 2-semester course. This is your
last chance to get it done. No excuses. No extensions.
Assignment #8, assigned Tuesday, 1 November 2005, due Tuesday
8 November 2005.
If you are only taking POCS II, pick one of the open issues
in your issues document and write a short research proposal
on how to address that open issue. The research proposal
needs to be written in LaTeX with appropriate references
to your BibTeX bibliography.
If you are taking POCS I and II, use your BibTeX bibliography
to start a reference manual for your project. The reference
manual needs to be written in LaTeX with appropriate references
to your BibTeX bibliography.
Post the ltx and bibtex that you have used to create the
above documents, post them on your web site and email the URLs
to the instructor.
On 1 November you will have started a seminar-style
discussion of the C-family of languages. Prepare notes
of the discussion as a web page, and add a link to
your arcib web site and email the URL to the instructor.
Assignment #9, assigned Tuesday, 8 November 2005, due Tuesday,
15 November 2005.
Go back over all the programming assignments in past
quizzes and email your best solutions to all of them to
the instructor no later than 2 pm on Tuesday, 15 November
2005. We will start going through solutions then,
and no updates to your code will be accepted after that.
If you are in POCS I and II, read Hoglund and McGraw,
"Exploiting Software," pages 1-70 (chapters 1 and 2) and
be prepared to discuss.
Work out a reliable way to backup your development
environment and do it. We will be doing capture the flag
soon, and you would not want to lose the work you have
done in building your system.
Assignment #10, assigned Tuesday, 15 November 2005, due Tuesday,
22 November 2005.
Prepare a solid, professional interim status report of your
project as a new separate web page on arcib with:
A frozen snapshot of all project documentation including
your user manual, your reference manual (if you are in POCS I and II),
your issues document (if you are only in POCS II), your bibTeX bibliography
and your timeline.
A coherent discussion of the lags and leads of the project
Short term and long term plans
Make a PDF of the entire interim status report.
Email the URLs for the status report as a web page and
as a PDF to the instructor.
If you are in POCS I and II, read Hoglund and McGraw,
"Exploiting Software," pages 71-145 (chapters 3 and 4) and
be prepared to discuss.
If you have not already done so, Work out a reliable way
to backup your development environment and do it. We will be
doing capture the flag soon, and you would not want to lose
the work you have done in building your system.
Secure your system against attack in a way that allows
you to still use it as a devlopment system. Send email to
the instructor summarizing the steps you take.
Assignment #11, assigned Tuesday, 22 November 2005, due Tuesday,
29 November 2005.
Prepare a proposal for your next project as a web page, post
it on arcib and email the URL to the instructor.
Take the materials you prepared for today and use them
to update your sorceforge web site, adding in any and all code
and documentation you have so far. You must post everything, even if it
is not working, but you should clearly identify code
that is not working.
Examine each of the SourceForge web sites of your classmates,
prepare an ordered list of the projects, organizing them by listing
the project for which you would most like to accept a handoff first
and the one for which you would least like to accept a handoff
last. Have that list with you on Tuesday.
If you are in POCS I and II, read Hoglund and McGraw,
"Exploiting Software,", 147-276 (chapters 5 and 6) and be
prepared to discuss.
If you are in POCS I and II, prepare a plan to attack
other computers in the lab and email your plan to the instructor.
DO NOT POST YOUR PLAN ON THE WEB.
By now you whould have backed up and secured your computer.
Back it up again, label you media, and bring your media
to class on Tuesday to give to the instructor for safe-keeping.
Assignment #12, assigned Tuesday, 29 November 2005, due Tuesday,
6 December 2005.
If you are in POCS I and II, read Hoglund and McGraw,
"Exploiting Software,", 277-366 (chapter 7) and be
prepared to discuss.
If you are in POCS I and II, update your plan to attack
other computers in the lab and email your plan to the instructor.
DO NOT POST YOUR PLAN ON THE WEB.
Prepare a solid 20 minute presentation on your project,
explaining the purpose of the project, the design of
the project, the current status and future plans. The
presentations will begin on 6 December.
Assignment #13, assigned Tuesday, 6 December 2005, due Tuesday,
13 December 2005.
If you are in POCS I and POCS II, read Hoglund and McGraw,
"Exploiting Software,", 367-447 (chapter 8) and be prepared to discuss.
Go back over all past assignments, complete all missing
items that were to be posted to your arcib web site and
your sourceforge web site, and post them with an
assignment-by-assignment index on your arcib web site.
Failure to do this completely by 8 pm on Tuesday 13
December 2005 will result in an incomplete for the course.
You will now "bid" on a project for which you
will accept a handoff. The price you will offer is
a certain number of hours of work on upgrading and improving
the project you are evaluating. List all the projects
in the class and for each one give the number of
upgrade and improvement hours you are offering. Email
your bids to the instructor
Bring your notebook for grading.
For the quiz on Tuesday, be prepared to write
a java progam from memory that will read text from the keyboard and
to write a sorted list of the unique words within the text to the screen.
Be careful to allow for all common separators for English text, and be sure
to make your sort case-insensitive. You must do all
the work in java. Your code must work for you to get any credit.
Assignment #14, assigned Tuesday, 13 December 2005, due Tuesday,
20 December 2005.
Over the break, you will be getting your project in shape for
a handoff. Prepare an inventory of all the documents and software
you intend to include in your handoff, gather preliminary version
of those documents and software, prepare a tarball, put that
tarball on you arcib web site and send the URL to the instructor
no later than 2 pm on Tuesday, 20 December 2005.
Prepare detailed analysis of the lags and leads for
each of the task milestones in your timeline, with honest
explanations (not excuses, explanations) of each and
every lag, and an explanation of how you would prevent
such problems in your next project. If relevant to the
causes of the lags, cite the appropriate portion of Brooks
or some other SE text. Post this analysis on your web
site and email the URL to the instructor no later than
2 pm on Tuesday, 20 December 2005.
You will have been informed of the project for
which you have won your bid. Specifically citing the
status reports you have listened to for that project
and the web sites for that project, explain what
you will do to evaluate that project. Post this
document on your erb site and email the URL to the
instructor no later than 2 pm on Tuesday, 20 December 2005.
Assignment #15, assigned Tuesday, 20 December 2005, due Tuesday,
31 January 2006.
Prepare a clean, carefully timed, 20 minute professional presentation
of your new project proposal. This presentation must include the
following:
Needs analysis
Feasibility study
Preliminary systems design
A realistic timeline providing completion of a working prototype
no later than 1 March 2006.
Your presentation must be posted on your web site as HTML
Your must provide a handout for the instructor and all
of your classmates.
Be sure you computer is secure and backed up.
Come with a list of 5 proposed exploits. These must
be specific exploits that you are prepared to discuss in
detail and for which you have the software ready to deploy
on your machine.