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 two 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 in POCS will take the lead on at least two distinct
projects during the academic year and participate in a minimum of
six projects. At least three projects must be completed
successfully. Each student in POCSR will take the lead on
at least two distinct research projects in the academic year and
will participate in a minimum of three projects (one of which may be
a development project instead of a research project). At least one
research project must be completed successfully. EACH student who
is in the POCS course (as opposed to the POCSR course) must
be a leader on a least two major distributed application development
projects and a leader or active team member on at
least four additional projects. A least two major design
and implementatiobn projects must be in the area of games
and at least one of those two must be successful. Students who
are in
POCSR course
will take the lead on two major research projects 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. Projects should start on
the gforge server on blondie.dowling.edu and, when
sufficiently mature for general distribution, should
migrate to www.sourceforge.net.
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.
Contact N. Darakev or G. Todorov to establish your gforge account
on blondie.dowling.edu.
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 gforge project
and a sourceforge web page and add links from your course web page to the
gforge anf 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 and to start building a development environment
on Tuesday, 12 September 2006.
Find out about MINGW and learn to use it.
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. The theme
for this year is interactive game design. Your
first project proposal should focus on some important
aspect of game design and preferably be for the
creation of an interactive game.
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.
This is for both POCS and POCSR: Murphy's Law states that anything
that can go wrong, will. In discussing how best to plan travel, a colleague
who does software engineering in a commercial environment proposed that
one should "apply Murphy's Law to Murphy's Law" and assume that Murphy's
Law will also fail and therefore that one should not always allow for
long delays in airport security, but should simply plan for average delays
and go to the airport fairly close to the planned departure time. Write
a clear, well reasoned essay agreeing or disagreeing with the proposition
and explaining how you would apply the conclusion on software engineering.
This is for both POCS and POCSR: Prepare a report on
your project. There are two current projects, one for POCS and one
for POCSR. Each group is to choose a single presenter and is to have
a solid, well-organized 20 minute presentation mainly on the user
externals
of the project, with as much detail as possible including dummy
screen shots. The presentation is to follow the approach of
"tell them what you are going to tell them, tell them, tell them
what you told them". The presentation is to include a brief status
report (not more than 2 slides) and a time line with task assignments
(not more than 1 slide). The presentation is not to go into any
of the internals of the software at this time, but it to try to
have a complete view of the user externals. Each presentation is
too be posted on Blondie as a PDF.
You must 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. You may have been through
this or similar material before.
Even in that case, you are not excused from doing this work. If you
have been through this material before, this should be
a review which goes very quickly for them.
If you are in POCS, read Gustafson's SE through page 71 (chapters 1-
4).
If you are in POCS, read Brooks through page 50 (chapters 1-4).
If you are in POCS, read Hubbard's Java through page 119 (chapters 1
-5).
If you are in POCSR, read Valiela, chapters 1-4.
Prepare a document describing yourself in the form of a resume (the short form)
and in the form of a CV. Bring both forms on paper next time with copies
for everyone
in the class. After the class discussion you will be posting some revised form
of this information on your web page.
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, read pages 51-83 (chapters 5-7) of Brooks.
If you are in POCS, read pages 72-126 (chapters 5-8) of Gustafson.
If you are in POCS, read Hubbard's Java 120-237 (chapters 6-9).
If you are in POCSR read Valiela, chapters 5-9.
If you are in POCS, In this week, you must get your project up to full speed,
so you can complete it in the two weeks after that. You must
prepare the following documents in the order given, post them
to blondie, and email them to the instructor as soon
as each one is ready. Each person on the project is responsible
for the timely delivery of each of these documents, but
only one person in the project should send the email message.
Do not remove the material prepared for the project for presentation
on today, but, if it is no longer correct, please do mark
it as obsolete and provide an updated version
A brief overview of the project constructed as a one page
brochure or flyer
A needs anaylsis and user manual
A feasibility study
A system design
A day-by-day implementation timeline with milestones and
task assignments, starting from today and continuing through
delivery with a handoff kit in 21 days (i.e. on 9 October).
This is for both POCS and POCSR: Prepare a report on
your project. There are two current projects, one for POCS and one
for POCSR. Each group is to choose a single presenter and is to have
a solid, well-organized 20 minute presentation mainly on the system
design of the project, with as much detail as possible including code
snippets where appropriate. The presentation is to follow the approach of
"tell them what you are going to tell them, tell them, tell them
what you told them". The presentation is to include a brief status
report (not more than 2 slides) and a time line with task assignments
(not more than 1 slide). You may use as much material from the
user externals persentation as you need, but the focus of this
talk is to be on the system design and internals.
Each presentation is
too be posted on Blondie as a PDF.
Keep your notebook and blog current through all
of this.
Be sure to bring your notebook for grading.
Assignment #4, assigned Thursday, 27 Sep 2007, due Tuesday, 2 October 2007
If you are in POCS, read pages 85-137 (chapters 8-11) of Brooks.
If you are in POCS, read pages 127-217 (chapters 9-14) of Gustafson.
If you are in POCS, read Hubbard's Java 238-335 (chapters 10-14, App A and B).
If you are in POCS, read Hubbard's C++ 1-155 (chapters 1-6)
If you are in POCS, read Harbour at least through chapter 4.
If you are in POCSR, finish Valiela and prepare a web page reviewing Valiela. Email
the URL of this web page to the instructor. Be sure to explain the relevance
of what Valiela teaches about doing science to doing software development. You may
collaborate with others in working up your page, but each POCSR student must
prepare their own web page, and must quote everything that is not the result
of their own creative effort and give full appropriate citations.
If you are in POCS, you are now to send an individual confidential report
on your experience with the first project as an email to the instructor. Include
an evaluation of your own performance and that of each of your team-mates.
If you are in POCS, it is now time to prepare a proposal for your second project.
For this project you will each lead you own project. You will not include either
of the other POCS students in your team. You should find at least one other
collaborator to work with, if possible. Your ability to draw someone into
your project purely on the basis of their interest in having their name as
a co-author in an interesting and useful piece of software is an important
skill to develop. The project is constrained to use Dev-C++ and Allegro, and
you are required to personally do all the actual programming, which must
be at least at the level of Chapter 4 of Harbour. The project is to be
a 1 or 2 person game, and it is to be different from the games in
Harbour and from any of the games you can currently find on the internet.
It can be simple, but it should be entertaining.
Assignment #5, assigned Tuesday, 2 October 2007, due Tuesday, 9
October 2007
If you are in POCS your first project is due on 9 October. Prepare a handoff presentation both
on paper and on-line (posted on blondie) as 20 slides/20 minutes giving a complete tour
of where to find all pieces of the package, explaining how to install and test the
package. Everything needed for the handoff must be posted on blondie, and the
presentaion should be self-contained, so that someone working from that documentation
without your help can get everything they need to install your package from source,
test the operation of the package and run it. The package must be signed with
the names and email addresses of all participants. The instructor will select who
will give what parts of the presentation. Everyone in the team must be prepared to
present any or all parts.
If you are in POCS read pages 141-206 (chapters 12-16) of Brooks.
If you are in POCS read Hubbard's C++ 156-341 (chapters 7-15).
If you are in POCS read Harbour 145-277 (chapters 5-8).
If you are in POCSR jointly start a bibtex bibiography of references relevant
to your project. Be prepared to present the status of this bibliography and to explain
how to use bibtex.
Assignment #6, assigned Tuesday, 9 October 2007, due Tuesday, 16
October 2007
If you are in POCS, add all POCS class members as
developers for the POCSF07 project on Blondie
and post handouts of all prior seminars to the docs section of that project.
Each person who gave a seminar is responsible for posting the handouts
for what they presented. If you did live demos, you need to convert
those demos to individual slides in the handout. If you did less than
90 slides, you need to fill in the material to get to 90 slides.
If you are in POCS, in cooperation with your classmates prepare a
complete seminar schedule for the rest of the semster as a draft of a flyer
with pictures of all speakers, going back to the start of the semester, both
as a PDF and on paper. Be prepared to discuss and finalize this seminar
schedule. Don't forget the the games seminars are to start at 3:50 pm
on Tuesdays.
If you are in POCS prepare a detailed 20 minute/20 slide presentation
on the user externals for your new project and post it to blondie as a doc
for the project.
Note: Your midterm grade will be based on the quality and
detail of what you have posted on blondie for the handoff for project
1 as of 9 October 2007 and the users manual for project 2 and the
seminar information as of 16 October 2007.
If you are in POCS read pages 207-292 (chapters 17-19 and the
epilogue) of Brooks.
If you are in POCS read Gottfried's C 1-240 (chapters 1-8)
If you are in POCS read Harbour, 279-428 (chapters 9-11) and
implement and test the enhanced version of tank war in Chapter 11. Post
the enhanced version to your web site and be prepared to download the
source, build and test on your MINGW, DEV C++, Allegro enviroment in
class. You must have documented your efforts on this assignment in
your notebook before class.
If you are in POCS 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.
As discussed in class, whether you are in POCS or just in POCSR, 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 certain 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 gforge site 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. Remember that scholar.google.com is useful
for this kind of work.
If you are only taking POCSR, 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. Add the document to the project on Blondie and email the
URL to the instructor. You may work collaboratively on this, but
each of you must email the URL and be prepared to discuss the
content with the class.
Assignment #7, assigned Tuesday, 16 October 2007, due Tuesday, 23
October 2007
Each POCS project group is responsible for a tightly timed,
20 minute presentation on the status of the second project
at its half-way point. This presentation must include the
following elements:
A solid presentation of the user externals.
A brief explanation of why the project is feasible.
A detailed timeline from the beginning to the end
of the project with tasks, dependencies, estimated
time for completion of each task and assignments
of those tasks to particular people.
For each task in the first two weeks, the
actual status of that task with lag and or lead.
For each person on the teams, a day by
day total of the number of characters of code
and documentaion produced by that person.
You must enter class with 6 copies of a handout.
If you are in POCS, read Gottfried's C 241-475 (chapters 9-14)
If you are in POCS, read Harbour 429-454 (Chapter 12) and implement
and test the
enhanced version of tank war in Chapter 12. Post the enhanced version to
your web site and be prepared to download the source, build and test on
your MINGW, DEV C++, Allegro enviroment in class. You must have documented
you efforts on this assignment in your notebook before class.
If you are in POCS, finish your comparison web page of C and C++.
If you are in POCS or POCSR, put the fruits of your BibTeX effort
into a web page (preferably on Blondie) and send the
URLs of your
in an email to the instructor.
Our discussion in class next week will be a comparison
of java, C and C++. Everyone in POCS will contribute to the discussion.
Assignment #8, assigned Tuesday, 23 October 2007, due Tuesday, 30
October 2007
If you are in POCS or POCSR your assignment for the coming week
is to make solid progress on your project and to prepare to discuss
the status and timing of your project without visual aids working
entirely from notes in your notebook, and 6 printed copies of
the documentation and code of your project.
Assignment #9, assigned Tuesday, 30 October 2007, due Tuesday, 6
November 2007
If you are in POCS, it is now time to finish off your second
project and to prepare a proposal for your third project.
To finish off your second project, you are to:
Upload all documentation and code to Blondie. For the
code, you must put it both as a zip or tarball under the files
tab and as individual files under the CVS tab.
In your documentation include the following:
A file called README that will be the
first file a user or installer will read and which
explains what is what in the entire kit
A file called INSTALL that give detailed,
step-by-step instructions on how to install the
program
A file called COPYING that contains a
copy of the GPL
A file called TODO that contains a list
of changes that should be made in some future version
of the program
A file called MANIFEST that contains
a list of all file names in the kit with a few words
of description for each file
A file called MANUAL.PDF that tell users
how to run the program. This file should be
a PDF.
Prepare a quick, 5 minute handoff presentation
and 6 copies of a 1-page flyer the summarizes where
someone can find all the pieces of your package.
If you are in POCS, after your handoff presentation, each of your 2 classmates
will make a written sealed bid to accept the handoff of
your package and to report on in the time after. The bids
will be in the form number of hours to be spent on the
evaluation. No bid may be for less than 5 hours of
evaluation time. The instructor will break any ties.
If you are in POCS for your third project, you will work on a 3-D
maze game with graphics, or something of equivalent
graphic demands. Once again you must use
Allegro. Part of your proposal is to include a proposal
as to team structure. You do not have to form a team
within the class, but you must form a team of at least
2 people. One person may be a member of more than
one team. Your proposal should be in the form of
an email to the instructor. You must not use
attachments, but you may refer to urls.
If you are in POCSR, prepare a brief, 5-minute presentation
and flyer for your project designed to attract users and
be prepared to "test-drive" the presentation in class.
Note that you are being asked to prepare this advertising
before the project is working. This is intentional.
Assignment #10, assigned Tuesday, 6 November 2007, due Tuesday, 13
November 2007
If you are in POCS, you will have been given an handoff of a
project to review. Prepare a helpful, detailed and specific
review of the handoff as it exists in Blondie. You make not
ask any questions of the developer in the course of the review,
since one of the issues you need to review is how complete and
self-contained the handoff materials on blondie are. Instead,
put the questions you were tempted to ask into the review
itself.
If you are in POCS, finish reading Harbour.
If you are in POCS you will start on your third project. The project
will have been defined in class. By next Tuesday, you are to
have posted on Blondie the complete user externals and as
much of the system design and timeline as you have ready.
All documents and code are to be posted to Blondie. You are
to apply for a sourceforge site for the project.
You are to work within the context of MINGW, Dev-C++ and Allegro and use
the techniques in Harbour. You are to adjust your specifications and
timeline so that you have a reasonable chance of presenting a
completed project by the end of the semester.
If you are in POCS pay attention to the way the POCSR students do their
presentation and flyer and the discussion today.
If you are in POCS, prepare a brief, 5 minute presentation
and flyer for your project designed to attract users and be
prepared to "test-drive" the presentation in class.
Note that you are being asked to prepare this advertising
before the project is working. This is intentional.
If you are in POCSR prepare a well-designed and
informative home page for your project. The home page
is to targetted primarily at users, but is to have sufficient
links for developers as well. Be prepared to provide a guided
tour of the home page in class.
Assignment #11, assigned Tuesday, 13 November 2007, due Tuesday, 20
November 2007
If you are in POCS, you must prepare a 20 minute, 20 slide
status report on your third project. The report is to focus
on day-by-day timeline and the tasks to be performed for each day.
If you are in POCS, prepare a well-designed and
informative home page for your project. The home page
is to targetted primarily at users, but is to have sufficient
links for developers as well. Be prepared to provide a guided
tour of the home page in class.
If you are in POCSR, prepare a 10 minute presentation on how you will
set up your project to support at least 3 different languages.
Assignment #12, assigned Tuesday, 20 November 2007, due Tuesday, 27
November 2007
If you are in POCS, prepare an oral status report on your project
working entirely from notes in your notebook -- no visual aids. The
critical question you must answer is what needs to be done to be
certain the project is successfully completed by the end of the
semester.
If you are in POCSR, prepare the specifications of a pre-release
of your project to be presented (the spec, not the working result) at the
end of the semester, and to be released at the beginning of the next
semester. The specification should be in the form of an email to the
instructor.
Assignment #13, assigned Tuesday, 27 November 2007, due Tuesday, 4
December 2007
If you are in POCS, your final for the semester will be a presentation
of the release of your third project. The presentation itself will be on
Tuesday, 11 December. For 4 December, you are to provide a written proposal of
what will be presented and who will present it. The proposal is to
be in the form of a 1 page memo to "management" (the instructor).
If you are in POCSR, your final for the semester will be a presentation
of the prerelease of your project. The presentation itself will be on
Thursday, 13 December. For 4 December, you are to provide a written proposal
of what will be presented and who will present it. The proposal is to
be in the form of a 1 page memo to "management" (the instructor).
If you are in POCS, you need to gain familiarity with software
development under Linux. You are to prepare a linux development environment
on your external disk drive and be prepared to discuss the issues of
creating and working in a Linux software development environment.
Assignment #14, assigned Tuesday, 4 December 2007, due Tuesday, 11
December 2007
If you are in POCS, on 11 December 2007, you will do a presentation
on your 3rd project. The content of the presentation will be discussed
in class today based on your 1 page memo.
If you are in POCSR, on 13 December 2007, you will do a presentation
of a pre-release of your project. The content of the presentation will be
discussed in class today based on your 1 page memo.
Assignment #15, assigned Tuesday, 11 December 2007, due
Thursday, 31 January 2008 and Tuesday, 5 February 2008.
Note that this class meets on Thursday, 31 January 2008.
If you are in POCS, be prepared to discuss your proposal
for a 4th project on 31 January 2008, and to submit formal
user externals of what you propose in a 20 minute presentation
on Tuesday, 5 February 2008.
If you are in POCS, be prepared to propose topics for
the Spring seminar schedule on on 31 January 2008, and
to make that schedule final on Tuesday, 5 February 2008.
If you are in POCSR, be prepared to propose a research
paper to be submitted to an appropriate journal or a technical
article to be submitted to a trade magazine. The paper
should be related to your project. You will discuss this on
31 January 2008 and will have to have an abstract ready by
5 February 2008.