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 projects 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 students who is 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 G. Todorov to establish your gforge account
on blondie.dowling.edu. Mr. Todorov has been asked to
play the role of a typical IT manager for this course.
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 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 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 or POCSR, read Gustafson's SE through page 71 (chapters 1-4).
If you are in POCS or POCSR, read Brooks through page 50 (chapters 1-4).
If you are in POCS or POCSR, read Hubbard's Java through page 119 (chapters 1-5).
If you are in POCSR, read Valiela, chapters 1-4.
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. You will have to settle on your first project and an
initial list of participants before leaving class on Tuesday, 19 September.
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 or POCSR, read pages 51-83 (chapters 5-7) of Brooks.
If you are in POCS or POCSR, read pages 72-126 (chapters 5-8) of Gustafson.
If you are in POCS or POCSR, read Hubbard's Java 120-237 (chapters 6-9).
If you are in POCSR read Valiela, chapters 1-4.
If you are just taking POCSR, 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.
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 your web site, 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.
Brief overview of the project
Needs analysis and user manual
Feasibility study
System Design
Day by day implementation timeline with milestones
and task assignments, starting from today and continuing
through delivery of a handoff kit in 21 days. Be sure to
allow slack for things to go wrong.
Prepare a solid, timed 15 minute presentation on the
status of each project. You have 2 minutes to introduce
the project to your audience, 10 minutes to honestly
review the project timeline and honestly report
task lead and lag times and what you will do to ensure
timely delivery of the product. You then have 1 minute
to summarize and 2 minutes for questions. 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 marks. Everyone involved in the project must
be prepared to make the presentation. You will be told
who will present only at the start of the presentation
and at any point in the presentation the instructor
may require a change to an alternate presenter.
Keep your notebook and blog current through all
of this.
Note: There are no classes at Dowling on Monday, 2 October
2006. You should not count on being able to work with your
group that day.
Assignment #4, assigned Tuesday, 26 Sep 2006, due Tuesday, 3 Oct
2006.
If you are in POCS or POCSR, read pages 85-137 (chapters 8-11) of Brooks.
If you are in POCS or POCSR, read pages 127-217 (chapters 9-14) of Gustafson.
If you are in POCS or POCSR, 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 POCSR, read Valiela, chapters 5-9.
If you are just taking POCSR, 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 guided tour of your project gforge site, your
documentation, your timeline (both original and current status)
and code status report as a written document (8 copies) as a handout
to use for the next item.
Prepare a solid, timed 15 minute presentation on the
status of each project. You have 2 minutes to introduce
the project to your audience, 10 minutes to honestly
review the project timeline and honestly report
task lead and lag times and what you will do to ensure
timely delivery of the product. You then have 1 minute
to summarize and 2 minutes for questions. 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 marks. Everyone involved in the project must
be prepared to make the presentation. You will be told
who will present only at the start of the presentation
and at any point in the presentation the instructor
may require a change to an alternate presenter.
Keep your notebook and blog current through all
of this.
Assignment #5, assigned Tuesday, 3 Oct 2005, due Tuesday, 10 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 POCSR, prepare a web page reviewing Valiela. Email
the URL of this web page to the instructor.
If you have not already done so, the head of each project team
must establish a sourceforge project and each member of the team
must be added as a developer. You do not have to add code to the
project on sourceforge yet, but you must add the user documentation
as soon as the sorceforge project is created, and the best
system documentation, system code and test protocol, along with
the report from the handoff will have to go up on sourceforge
by 17 October (details in the next assignment).
Your projects must be completed and ready for handoff at 1 pm
on 10 October 2006. You must have posted a complete release kit on
the gforge server with full user documentation, system documentation,
system code and a test protocol before the start of class. You
must bring 7 sets of written documentation with you. You will
not be permitted to produce or revise it after 1 pm. You must
have a complete web page presenting the completed project.
If any of these elements are not complete by 1 pm,
the entire project will be considered a failure. Each team
will make a solid-time 20 minute presentation of their completed
project and one of the other teams will be assigned to accept
the handoff.
Keep your notebook and blog current through all
of this.
Assignment #6, assigned Tuesday, 10 October 2006, due Tuesday,
17 October 2006 and Thursday 19 October 2006.
Each project leader is to add the people who have been
assigned to accept the project handoff to the gforge and
sourceforge projects so that the handoff reports can be
added to the project website without censorship by the
original project developers.
Be prepared with your handoff reports on the projects for
which you will have accepted a handoff at the class meeting
of 10 October. Each handoff report is to be a tight, well-organized
20 minute presentation, with a written report and a copy
of that report as a pdf and as a web page that must have
been upload to the gforge site on blondie before the class
meeting on 17 October and that is to be uploaded to the
sourceforge site as soon as possible thereafter.
No matter what the status of the project, a complete
updated release responding to the handoff report
is to be posted on gforge no later than 3 pm on
19 October 2006, and that same release is to be
posted to sourceforge as soon as possible thereafter.
Midterm grades will be based primarily on what is
posted on gforge as of 3 pm on 19 October 2006.
Each person on the relevant development team and
the relevant handoff team is responsible for the state
of the relevant gforge project site.
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 POCSR.
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.
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.
You will have been assigned second project in class on
10 October. Prepare a tight, timed, detailed 10 minute
status presentation with handout on your new project for
1 pm on 17 October 2006. Be certain to have your notebook up to
date.
In view of the lack of attention to the assigned readings,
you will have a long quiz on Brooks on Thursday, 19 Oct 06.
The only material you may use for the quiz is your notebook.
Assignment #7, assigned Tuesday, 17 October 2006, due Tuesday,
24 October 2006.
Each 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 7 copies of a handout.
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 continue the seminar portion of the course with presentations
by members of the class comparing java, C and C++. Everyone will
speak on Tuesday.
We will continue the seminar portion of the course with
presentations each Tuesday at 3:50 pm. If you have not
volunteered for one of the following topics you will have
one assigned to you.
Basic skills
Basics of C, C++ and Java
Building Linux
Working with Apache and Tomcat
Dealing with people
Software system life cycle concepts
Analysis of needs and identification of problems
Consideration of alternatives
Understanding logical vs. physical design issues
Data Communications
Network Flows and Queuing Theory
Network Design
Databases
Current state of the art in software engineering
Introduction to UML
Development of Requirements and Specifications
The business view of systems engineering
Information gathering by interviews and document reviews
Identification of stakeholders
Facilitated meetings
Arranging for buy-ins and sign-offs
The technical view of systems engineering
System models
Prototypes and emulations
Documentation and specifications
Creating a detailed, costed system design
Building a real system
Distributed Systems
Validation and handoff
Dealing with existing systems
Modern tools
Dissemination and Open Source Issues
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, 24 October 2006, due Tuesday
31 October 2006.
If you are only taking POCSR, 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, 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 24 october 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 #8, assigned Tuesday, 31 October 2006, due Thursday
9 November 2006.
On Tuesday, you were to have completed your second project.
Use the extra two days you have to prepare a really polished
handoff presentation on the second project, and to prepare
a really polished proposal for your third project. Your handoff
must be based on complete code and documentation on the
gforge site. Everything on this list must be there:
User documentation
Feasibility study
System Design
Reference Manual
Working code
Installation instructions and test suite
Carefully prepare a set of exactly 20 slides for a 20 minute
presentation. Ecah slide must have a coherent point to make
and must present a bulleted list of relevant items. That
presentaion must also be on the gforge site, and you must have
printed out 7 copies of those slides, 6 slide images
per page on paper as a handout before the start of class
on Thursday. If any of these items are not ready by
3:10 pm, the project will have failed even if the code
itself is working.
For your third project, you are to prepare a one page
project proposal on a project that:
You really want to do;
That you believe it is feasible to do very, very well
between 9 November and the first class meeting in the
Spring semester;
That involves a serious programming effort, i.e.
more than can be done by one person working alone in
the time frame given.
That will produce a useful product that can
be accomplish something of interest and value to
a significant community of users.
If you are in POCS, read Hoglund and McGraw, "Exploiting
Software," pages 1-70 (chapters 1 and 2) and be prepared to
discuss.
Whether you are in POCS or POCSR Work out a reliable way to backup
your development environmentand do it.
Assignment #9, assigned Thursday, 9 November 2006, due Tuesday
14 November 2006.
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 1 pm on Tuesday, 14 November
2005. We will start going through solutions then,
and no updates to your code will be accepted after that.
On 9 November the handoffs of two projects
will have been presented. You are to prepare
a short, one page written evaluation of each of
those two projects (whether you worked on the project
or not) including one solid recommendation for improvement
of that project. Bring 7 copies of that single page with you.
On 9 November your third project will have been
assigned. Be prepared to report on the time you have
invested in that project and its status on 14 November.
Go back over the gforge site of each project
with which you have been involved this semester and
start to fill it in and clean it up so that you can
return to each project and continue on it at a future
date. You do not have the time to fix anything major
right now, but you need to make notes in the form
of a TODO list of what needs to be done before it fades
any more than it has from your mind.
If you are in POCS, read Hoglund and McGraw,
"Exploiting Software," pages 71-145 (chapters 3 and 4) and
be prepared to discuss.
Prepare a proposal for a single source denial
of service attack and email that plan to the
instructor.
Assignment #10, assigned Thursday, 14 November 2006, due Tuesday
21 November 2006.
If you are in POCS, read Hoglund and McGraw, "Exploiting Software,",
147-276 (chapters 5 and 6) and be
prepared to discuss.
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.
Bring a complete, printed user manual for your third
project to class, and prepare an clean 15 minute (15 slide)
presentation with handout of the user functionality of the
third project. The presenter for each project will be
selected at random.
In order to do proper software development, you must have
a unix development environment and be able to build packages.
If you have not already done so, by next Tuesday, you must
have installed a bootable Linux on your external disk. The
system must have working compilers, headers and libraries.
We will be doing some package builds next time.
Assignment #11, assigned Thursday, 21 November 2006, due Tuesday
28 November 2006.
In collaboaration with your classmates, write a simple,
reliable task scheduling program in any language you wish.
In class today, you will have installed rasmol. If that
install is not complete, finish it. Then locate kits for
PyMol and jmol and install those packages as well. Be prepared
for questions on the differences among the packages.
If you are in POCS, read Hoglund and McGraw, "Exploiting Software,", 277-366 (chapter 7) and be
prepared to discuss. Try to set up your machine to defend against a denial of
service attack. You will both attack and defend next time.
Bring a complete, printed system design document for your
thirdproject to class, and prepare an clean 15 minute (15 slide)
presentation with handout of the system design of the
third project. The presenter for each project will be
selected at random.
Assignment #12, assigned Tuesday, 28 November 2006, due Tuesday
5 December 2006.
Last time in collaboration with your classmates, you wrote a simple,
reliable task scheduling program in any language you wish. Apply
that program to your current project and email the results to the instructor.
Locate a source kit for apache tomcat. Build that kit from source,
install it on your system, configure it and test it.
If you are in POCS, read Hoglund and McGraw, "Exploiting Software," 367-447
(chapter 8) and be prepared to discuss. Try to set up your machine to
defend against a port probing attack. You will both attack and defend next
time.
You will have completed your user documentation and system design for the
previous class. For this class you are to start coding by creating
a full set of working dummy output screen generators that can later be converted
to accept real output and working software to accept input and validate
it. You must prepare a clean 15 minute (15 slide)
presentation with handout of this input/output scaffolding. You must
have posted your user externals and system design to the docs section
of your gforge site and this code to the CVS section of your
gforge site prior to class time. This portion of this assignment
is the first 25% of your final exam for this semester.
Assignment #13, assigned Tuesday, 5 December 2006, due Tuesday
12 December 2006 and Thursday 14 December 2006.
This is the last assignment with a due date within the
current semester. For 50% of your final exam grade you are
to prepare a webpage with a complete index of all past assignments
and quizzes for this semester, linked to your best responses to those
assignments. It is very important that those responses include
working code for all coding assignments. On quizzes, be very
careful to read and respond to each of the questions. Members
of the class may (indeed should) divide the work and/or work together on
all responses for both assignments and quizzes, but each student must
present a web page on arcib with the required index of links.
Email the URL to the instructor no later than 10 pm on 14 December
2006. It is unlikely that you will be able to complete
this assignment in a satisfactory manner unless you work with
your classmates.
You will have completed your user documentation, system design
and input-output scaffolding for the previous classes and this class.
For this assignment you are to use this documentation and coding
framework to create a realistic plan with timeline for writing
and inserting coding tasks into this framework. The timeline
must realitically allow for completion of all coding tasks no
later than 15 January 2007 to allow time for testing and creation
of a clean release kit. Each coding task must be designed to
allow the code produced to be inserted into the input-output
scaffolding and tested in that environment. You must prepare a
clean 15 minute (15 slide) presentation with handout of this timeline,
along with a demonstration of the first coding task inserted
into the scaffolding and tested. You must have posted your user
externals, system design and time lineto the docs section
of your gforge site and all code to the CVS section of your
gforge site prior to class time. This portion of this assignment
is the last 25% of your final exam for this semester, and must be
completed by the start of class on Tuesday, 12 Dec 2006.
Everyone will have to particpate in these presentations.
Assignment #14, assigned Tuesday, 12 December 2006, due Tuesday
30 January 2007.
This is the first assignment for the Spring semester.
You must have your third project complete and ready for
handoff on Tuesday 30 January 2007. In order to help you
reach the goal, you are to email two interim project
reports to the instructor during the break: one reporting completion
of all coding and documentaion, no later than 15 January 2007
and one reporting completion of a complete release kit
no later than 25 January 2007. Each person in the project
must send these two emails, even if they are all duplicates.
At the 12 December 2006 class meeting you will have
settled on a firm timeline for delivery of the code to fit
into your scaffolding. For each deliverable on the timeline,
the person or persons designated as responsible for that
deliverable is to send an email to the instructor on the due date
of the deliverable, and another email on the actual delivery date,
which must be after posting of the code for that deliverable
on gforge. Each of these emails must also be posted to the gforge
site.
Each project team must prepare a full half-hour
(30 slide) presentation of the third project. This
presentation must include:
A brief overview of the project and the status
of the code and documentation
A detailed discussion of the user externals
A brief discussion of outstanding problems
A detailed discussion of how to install and test
the release
A summary of all of the above points
References and bibiography
At the time of the presentation, a handout must be
provided to the instructor and all class members. The
handout will incloude all of the information above.
In addition, it will contain a guide to the contents
of the gforge site for the project.
For all Tuesday meeting of the class, someone
must present one of the syllabus topics that were
not covered in the Fall. Some of the topics will
have been assigned before the break. Some of the
topics will be assigned or re-assigned during the
Spring semester. The class is jointly responsible
for creating a class seminar web page and series
of flyers listing all of the Fall semsester talks
and as many of the Spring semester talks as are known.
The flyers are to be posted on the doors of KSC020,
KSC121 ande KSC022 no later than Monday, 29
January 2007 and kept current thereafter.