98935 CSC 3961N -- Project-Oriented Computer Science
This web page is http://www.bernstein-plus-sons.com/.dowling/POCSF06/POCS_Syllabus.html
Copyright © 2002, 2005, 2006 Herbert J. Bernstein and other parties. All rights reserved.
Note that, in general, Dr. Bernstein will be at the Oakdale campus on Monday, Tuesday, Wednesday and Thursday afternoons. Meetings at the Brookhaven campus are by appointment only. If at all possible, please use email to schedule meetings in advance to avoid conflicts with other students and other obligations of the instructor.
For more information see http://www.bernstein-plus-sons.com/.dowling/HJB_Contact_Info.html.
This is the syllabus for Project-Oriented Computer Science (POCS) and Project-oriented Computer Science Research (POCSR) for Fall 2006. In order to get credit towards the major, students taking POCS in Fall 2006 must also take POCS in Spring 2007. In order to get credit towards the major, students taking POCSR in Fall 2006 must also take POCSR in Spring 2007.
As the course moves forward, students should return to this page frequently for updated material.
The program for Computer Science majors has changed. We have moved the old CSC 4175N Software Engineering and CSC 4177 Senior Project from the senior year to the junior year for computer science majors and have combined these two courses with three intermediate programming language courses in a two-semester project-oriented double course (6 points per semester) to better align the Computer Science program with current demands of the Computer Science job market.
If you are a Computer Science Major and you have not yet taken Software Engineering, you should register for Project-Oriented Computer Science for Fall 2006 and CSC 3961N and then again for Spring 2007 as CSC 3962N for a total of 12 credits. If you have already taken Software Engineering or POCS, you will most likely want to register for Project-Oriented Computer Science Research for Fall 2006 as CSC 4961N and then again for Spring 2007 as CSC 4962N for a total of 6 credits
These courses will meet in KSC 022 on Tuesdays from 1:00pm-5:20 pm and on Thursdays from 3:10pm-5:20 pm. KSC 022 will function as a virtual laboratory by having each student use a laptop computer with a portable external disk. KSC 022 has been augmented with sufficient outlets and network support to allow students to come in with their laptops, configure them quickly to work in a local laboratory network and then leave with their virtual lab when class time is over. Classroom virtual laboratory equipment that cannot safely be locked up in KSC 022 will be stored in KSC 020 between sessions. We will have a limited supply of laptop computers to lend to students who do not have their own laptop computers, but students are encouraged to come with their own laptops. All students will be responsible for buying their own portable external disks. Depending on size, a portable, external disk can cost $90 to $200 new.
The courses that are combined into the junior-level POCS "super-course" are
|CSC 2069N||Unix and C||3 credits|
|CSC 2076N||C++ Programming Language||3 credits|
|CSC 2077N||Intermediate Java Programming||3 credits|
|CSC 4175N||Software Engineering||3 credits|
|CSC 4177N||Senior Project||1 credit|
In addition, for 2006-2007, a security-related course will be included in the mix. Details on the security topic are being kept secure for the moment.
If you have not yet taken Software Engineering, but have already taken some of the other courses, you must discuss appropriate alternative course substitutions with the instructor. All the course substitutions other than the ones listed above will need to be formally approved case by case by the NSM FDCC.
Both the junior level and the senior level courses will begin with a classic lecture/laboratory structure and will transition over the first semester to a seminar/laboratory structure, functioning entirely in a seminar/laboratory environment for the second semester. CSC3961/3962N (POCS) and CSC4961/4962N (POCSR) will meet jointly for 2 hours per week for the lecture or seminar component(Tuesdays 3:10 pm to 5:20 pm). CSC 3961/3962N (POCS) students are scheduled for an additional block of 4 hours per week of supervised laboratory work (Tuesdays 1:00 pm to 3 pm and Thursdays 3:10 to 5:20 pm). CSC 4961/4962N (POCS) students are scheduled for an additional 1-hour block of supervised laboratory work (Thursdays 4:20 pm to 5:20 pm). POCSR students are welcome to and encouraged to attend and particpate in the additiopnal POCS hours of lab access and to work on projects with the POCS students. Since much of the work to be done for these courses requires use of the equipment in the laboratory, rather than be done as normal "homework" students in CSC 3961/3962N (POFCS) are expected to spend an additional 9-18 hours per week using their laptops and portable disks in ad hoc groups using their systems to form a virtual laboratory, and students in CSC 4961/4962N (POCSR) are expected to spend an additional 4.5-9 hours per week in the same mode of work.
CSC 3961N, CSC 3962N Project-Oriented Computer Science
6 credits each
Prerequisite: CSC 1071 or CSC 2025 or permission of the instructor. The prerequisite for CSC3962 is CSC3961 taken in the immediately preceding semester. Students who have successfully completed CSC3961 in an earlier academic year and who have not completed CSC 3962 need permission of the department to retake CSC 3961.
CSC 4961N, CSC 4962N Project-Oriented Computer Science Research
3 credits each
A one-year project-oriented research course, primarily for seniors in the Computer Science major and for others with professional programming project skills, offering the opportunity to engage in a significant Computer Science research project while still an undergraduate. Under the guidance of the instructor, the student will formulate and undertake a significant Computer Science research project, producing a technical report of their work, and submitting that report for possible journal publication. Students will make all the software they produce available as fully documented open source software. The course is held in a collaborative Computer Science laboratory environment in which students will spend many hours each week. This course is a reasonable alternative to an internship for students planning to go on to graduate school or for students building up their portfolio of experience for commercial employment. Students who have taken enough of their required courses earlier may wish to take this course in addition to an internship. This is a two-semester sequence, and no credit towards the Computer Science major is given until successful completion of the second semester
Prerequisite: CSC 3961/3962N or permission of the instructor. The prerequisite to CSC4962 is CSC4961 taken in the immediately preceding semester. Students who have taken CSC4961 in an earlier academic year and who have not completed CSC 4962 need permission of the department to retake CSC 4961.
In view of the expense for the portable USB 2.0 disk, we have made Sommerville a recommended text, rather than a required text. Knuth is highly recommended reading for all computer science students.
The approach is that of a "Lyceum", in which all involved learn together through discussions. The following outline shows some of the major topics to be covered, but is not intended to imply sequential ordering. Of necessity, many threads of the course will overlap throughout the year, and students will assume increasing responsibility for self-directed and collaborative discovery and presentation of topics.
A laptop computer (the department will attempt to make arrangements for students who do not have a laptop to borrow one for the duration of the course on a first-come-first-served basis. If a student does not have a laptop and the pool of loaners has been exhausted, the student involved, unfortunately, may not be able to take the course).
A portable USB 2.0 disk of at least 80 GB capacity. If you already have a USB 2.0 disk of 40GB capacity or more, that should work, but for new disks, the 80GB disks cost less than the 40GB disks, and 1 USB 1.0 disk will be painfully slow. Students are responsible for the purchase of this item. The Department will not provide loaners.
A hardbound laboratory notebook.
Other texts will be required depending on the topic (s) chosen.
The course outline will depend on the choice of research topic but will begin with a discussion of the nature of scientific research, a review of the current literature and of currently active CS research projects.
This is a course for students who are sufficiently advanced in Computer Science to pursue Computer Science research projects.
The approach is that of a "Lyceum", in which all involved learn together through discussions. With the help of the instructor and other members of the class, each student is expected to select an area of Computer Science in which to address one or more meaningful research problems over two semesters. Topics will be selected collaboratively and may evolve from the student's interests, the instructor's interests or some topics found in the literature. Students will be introduced to techniques needed to find relevant literature to understand the current state of the problems chosen, to formulate a research plan to attempt to solve the problems chosen, and then to carry out their research plans in collaboration with the instructor and with one-another. Students will present their progress to the class throughout the two semesters and will be taught to publish the results of their efforts as technical reports, as web pages, as meeting posters, as talks and as scientific papers. It is hoped that many of the projects will produce useful and interesting solutions to the problems undertaken. However, even negative results are worth discussion and analysis and will require a report by the student.
The process of work on the project is more important than the results of the project. In order to be able to evaluate student involvement in that process, students must attend regularly and participate actively. Therefore, attendance will be taken at all class meetings. All absences must be explained in writing (or via email). Students who miss any lectures or laboratory sessions or who fall behind on their projects must meet with the instructor to review their progress in the course.
As per department policy, students who miss more than 2 classes before the midterm will be given a midterm warning and advised to withdraw. Grades will be reduced for unexcused absences (see grading policy, below). Failure to attend classes regularly and faithfully and failure to actively participate in project meetings will have a serious impact on your ability to do the required projects and will result in failure. There is no way to make up a failure to participate in the projects except by taking the course all over again.
To help ensure punctuality and to help in evaluating student progress, there will be a short (1 - 4 questions) project-related quiz at the start of each meeting of the class. There will not be any opportunity to make up these quizzes when they are missed due to lateness or absence.
Each student will be required to maintain a laboratory notebooks of their work. One cannot complete the course without mainatining a current notebook. There is no way to make up a failue to maintain a current notebook except by taking the course all over again.
There will be reading assignments and homework assignments to help prepare students for the work in the course. Most of the homework will not be submitted for grading. Instead, the instructor expects to see the lessons of the readings and homeworks reflected in all other work for the course. In particular students will be expected to present and discuss answers to homework problems during class meetings. Students who have difficulty with the homework should see the instructor as soon as possible to discuss the issues involved.
There will be oral midterm and final examinations consisting of graded project reports, backed by creation of web sites and preparation of written reports and publications.
Each student will participate in multiple projects, some of which must be done as group efforts. For students taking POCS, a minimum of six full development projects must be undertaken and at least 3 successfully completed during the academic year. For students taking POCSR, a minimum of 2 full research projects must be undertaken at at least one completed successfully during the academic year. In addition each student taking POCSR must act as a consultant to the students working on the development projects.
Students will have two weeks to explore alternative projects, to form groups, to acquire their books and hardware and create workable Linux development environments.
In the 3rd week of the course, the class as a whole, under the guidance of the instructor, will evaluate all proposed projects and all proposed groups, and attempt to make a consensus determination of project assignments. If that does not result in resolution of outstanding problems, the instructor will intervene as "chief decision maker" and make the necessary assignments. Serious work on the first project must begin immediately in the 3rd week of the course.
By the end of the course, all students will be expected to display effective problem analysis and programming skills. No project will be considered complete until all students involved show a complete grasp of the tools needed to design and implement the project. All students will be expected to learn how to work with a variety of programming languages and software tools and to be able to work unaided to find, read and understand documentation for packages they have never used before, and then to install and use such packages.
Some students may not have an adequate preparation in programming to undertake the homework assignments and the course project. Many texts are oriented towards java, and java is fast becoming a major production tool. However, many projects require programming in other languages. It is important that students be able to adapt to other languages.
For those students who have difficulty in breaking free of the strictures and conventions of java, it may help to consult:
from the Cornell University CS414 Operating Systems course by Emin Gün Sirer. Our thanks to Georgi Kitchoukov for pointing out this useful resource.
Using VNC via SSH: vnc.html
If you're interested in joining with your fellow students in developing and maintaining a web site, or pursuing your exploration of computer hardware or software, you might want to consider joining the Dowling Computer Club. Just follow the link for further details:
Dowling College Computer Club Web Site