| Assignments | Contact Info | Computer Club |

29176 CSC 4181N -- Project-Oriented Computer Science (POCS III)
29177 CSC 4182N -- Project-Oriented Computer Science (POCS IV)

Spring 2006
CSC 4181N Tuesday 1:10 pm -- 3:10 pm, Thursday 3:10 pm - 4:10 pm, Oakdale Campus, Kramer Science Center KSC 022
CSC 4182N Tuesday 3:20 pm -- 5:20 pm, Thursday 4:20 pm - 5:20 pm, Oakdale Campus, Kramer Science Center KSC 022
Herbert J. Bernstein

Syllabus

 


This web page is http://www.bernstein-plus-sons.com/.dowling/POCSS06/POCS_Syllabus.html
Copyright © 2002, 2005, 2006 Herbert J. Bernstein and other parties. All rights reserved.


Instructor:

Office Hours:

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.

Introduction

This is the syllabus for Project-Oriented Computer Sciences (POCS III and IV) for Spring 2006, continuing POCS I and POCS II from Fall 2005.. In order to get credit towards the major, students taking POCS I must also take POCS II in Fall 2005 and must take POCS III and POCS IV in Spring 2006. In order to get credit towards the major, students taking POCS II without POCS I in Fall 2005 must also take POCS IV in Spring 2006.

As the course moves forward, students should return to this page frequently for updated material.

The program for Computer Science majors is changing. We are moving CSC 4175N Software Engineering and CSC 4177 Senior Project from the senior year to the junior year for computer science majors and are combining 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.

As of this writing the POCS program has been approved by the NSM FDCC and by the Senate. The timing is such that the courses may not make it into the 2005-2006 catalog. Therefore, 4 computer science special topics courses have been included in the Fall 2005 and Spring 2006 schedules as place-holders for the POCS courses;

Due to a clerical error, POCS III is listed in the official schedule as POCS I and POCS IV is listed as POCS II. We will try to get this corrected before the end of the Spring semester, so that transcripts will read correctly.

If you have not yet taken Software Engineering, you should register for both Project-Oriented Computer Science I and Project-Oriented Computer Science II for Fall 2005 and register for both Project-Oriented Computer Science III and Project-Oriented Computer Science IV for Spring 2006, for a total of 12 credits. If you have already taken Software Engineering, you will most likely want to register only for Project-Oriented Computer Science II for Fall 2005 and and Project-Oriented Computer Science IV for Spring 2006, for a total of 6 credits

This semster the courses will meet in KSC 022 on Tuesdays from 1:10 pm- 5:20 pm and on Thursdays from 3:10 pm - 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.

These courses are placeholders for two new Project-Oriented Computer Science courses: CSC3961/3962N primarily for juniors and CSC4961/4962N primarily for seniors. You cannot register for CSC3961/3962N or CSC4961/4962N yet. You must register for CSC4181N and CSC 4182N or just for CSC 4182N instead. You must not register for CSC 4181N without registering for CSC 4182N. The new junior level course will be a year-long 12-credit course, CSC3961/3962N Project-Oriented Computer Science. The courses that are combined into the junior-level "super-course" are

CSC 2069NUnix and C3 credits
CSC 2076NC++ Programming Language3 credits
CSC 2077NIntermediate Java Programming3 credits
CSC 4175NSoftware Engineering3 credits
CSC 4177NSenior Project1 credit

In addition, for 2005-2006, a capture-the-flag-based computer security course will be included in the mix.

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. Because we are in a transition, all the course substitutions for 2005-2006 will need to be formally approved case by case by the NSM FDCC.

The 12 credits of POCS I, II, II and IV are the placeholder for CSC3961/3962N. The 6 credits of POCS II and IV are the placecolder for CSC4961/4962N.

Both the junior level and the senior level courses in the fall began with a classic lecture/laboratory structure and transitioned over the first semester to a seminar/laboratory structure. For the Spring semester the course will functioning entirely in a seminar/laboratory environment. CSC3961/3962N (Fall: POCS I, II, Spring: POCS III and IV) and CSC4961/4962N (Fall: POCS II, Spring POCS IV) will meet jointly for 2 hours per week for the lecture or seminar component(Tuesdays 3:20 pm to 5:20 pm). CSC 3961/3962N (Fall: POCS I, II, Spring: POCS III and IV) students are scheduled for an additional block of 4 hours per week of supervised laboratory work (Tuesdays 1:10 pm to 3:10 pm and Thursdays 3:20 to 5:10 pm). CSC 4961/4962N (Fall: POCS II, Spring POCS IV) students are scheduled for an additional 1-hour block of supervised laboratory work (Thursdays 4:20 pm to 5:20 pm). 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 (Fall: POCS I, II, Spring: POCS III and IV) 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 (Fall: POCS II, Spring POCS IV) are expected to spend an additional 4.5-9 hours per week in the same mode of work.

Course descriptions:

CSC 3961/3962N (what you get if you take POCS I, II, II and IV) has the following course description:

CSC 3961N, CSC 3962N Project-Oriented Computer Science
(REGISTER FOR CSC 4181N and CSC 4182N for both Fall 2005 and Spring 2006)
6 credits each

A one year project-oriented course, primarily for juniors in the Computer Science major and for others with solid programming skills and knowledge of data structures. Students under the guidance of the instructor will engage in a major team-based development project involving the creation of a major web-based application in a Linux/Apache/Tomcat/Mozilla/MySQL environment. In the beginning the instructor will lecture and guide. By the end of the first semester, students are expected to assume more responsibility as the course makes a transition to a seminar format. By the end of the course, students are expected to function as fully responsible computer professionals capable of producing products that draw on skills in Unix and C, C++, Java, JavaScript, JSP and servlets with a full understanding of modern software engineering techniques. Students will learn to build and configure the software tools that they use, including the operating system. Students will make all the software they produce available as fully documented open source software. The course is held in a cooperative Computer Science laboratory environment in which students will spend many hours each week. Successful completion of this course substitutes for the former requirements in the major for CSC 2076N, CSC4175N, CSC4177N, and two electives. 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 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 4961/4962N (what you get if you take POCS II and IV) has the following course description:

CSC 4961N, CSC 4962N Project-Oriented Computer Science Research
(REGISTER FOR CSC 4182N for both Fall 2005 and Spring 2006)
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.

2005-2006 Special Topics Course Syllabi as Placeholders for the POCS courses

Except by special arrangement with the Department and the NSM FDCC, students must register either for all 4 courses (2 in the Fall and 2 in the Spring) as a placeholder for CSC3961 (6 credits in the Fall) and CSC 3961 (6 credits in the Spring) or for the two CSC 4182 courses as a placeholder for CSC 4961 (3 credits in the Fall) and CSC 4961 (3 credits in the Spring). Students will not be permitted to register for the Spring courses if they have not successfully completed the Fall courses.

Students taking all 4 courses, Project-Oriented CS I, II, II and IV, in 2005-2006:

6 credits per semester, meeting Tuesday 2-6 pm, Thursday 4-6 pm

A one year project-oriented course, primarily for juniors in the Computer Science major and for others with solid programming skills and knowledge of data structures. Students under the guidance of the instructor will engage in a major team-based development project involving the creation of a major web-based application in a Linux/Apache/Tomcat/Mozilla/MySQL environment. In the beginning the instructor will lecture and guide. By the end of the first semester, students are expected to assume more responsibility as the course makes a transition to a seminar format. By the end of the course, students are expected to function as fully responsible computer professionals capable of producing products that draw on skills in Unix and C, C++, Java, JavaScript, JSP and servlets with a full understanding of modern software engineering techniques. Students will learn to build and configure the software tools that they use, including the operating system. Students will make all the software they produce available as fully documented open source software. The course is held in a cooperative Computer Science laboratory environment in which students will spend many hours each week. In 2005-2006, until a physical laboratory can be set up, students will use an ordinary classroom, and create the necessary laboratory as a virtual laboratory using their own laptop computers and portable disk drives. One primary theme of the course will be a capture-the-flag approach to computer security, in which teams of students will attempt to configure their systems so that they are as secure as possible and will attempt to breach the security of systems set up by the other teams.

With the approval of the NSM FDCC, successful completion of all four courses will substitute for the requirements in the major for CSC 2076N, CSC4175N, CSC4177N, and two electives. This is a two-semester sequence, and no credit towards the Computer Science major for the course substitutions is given without successful completion of the second semester. Students who successfully complete only the first semester will have credit only for general electives, not for the course substitutions and not towards the major.

Prerequisite: CSC 1071 or CSC 2025 or permission of the instructor. The prerequisite for the Spring 2006 CSC 4181/4182 courses are the Fall 2005 CSC 4181/4182. Students are advised that, if approved, the newly created CSC 3961/CSC3962 courses will be cross-listed against these special topics courses.

Required Books and Materials

Recommended Reading:

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.

Course Outline

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.

Students taking only Project-Oriented CS II and IV in 2005-2006:

3 credits per semester, meeting Tuesday 4:10 -- 6:10 pm, Thursday 5:10 -- 6:10 pm

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 students 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. In 2005-2006, until a physical laboratory can be set up, students will use an ordinary classroom, and create the necessary laboratory as a virtual laboratory using their own laptop computers and portable disk drives. 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. Depending on the project chosen, students will be encouraged to seek NSM FDCC approval for appropriate course substitutions. Depending on the project chosen, it may be appropriate for students to participate in the capture-the-flag computer security activity of the students taking all 4 courses. This is a two-semester sequence, and no credit towards the Computer Science major is given until successful completion of the second semester. Students who successfully complete only the first semester will have credit only for a general elective, not for the course substitutions and not towards the major.

Prerequisite: CSC 4175/4177 or permission of the instructor. The prerequisite for the Spring 2006 CSC 4182 course is the Fall 2005 CSC 4182. Students are advised that , if approved, the newly created CSC 4961/CSC4962 courses will be cross-listed against these special topics courses.

Required Books and Materials

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.

Required Texts

Other texts will be required depending on the topic (s) chosen.

Recommended Reading

Course Outline

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.

Alignment with new POCS Plan

We will try to arrange for the following cross-listings for 2005-2006 or to have transcript converted to reflect the new POCS numbers::

CSC 3961 Project-Oriented Computer Science (6 credits Fall 2005) with:

CSC 3962 Project-Oriented Computer Science (6 credits Spring 2006) with:

CSC 4961 Project-Oriented Computer Science Research (3 credits Fall 2005) with:

CSC 4962 Project-Oriented Computer Science Research (6 credits Spring 2006) with

Note that this effectively cross-lists CSC 4961 against part of CSC 3961 and CSC 4962 against part of CSC 3962. This is intentional. The same instructor will be handling the overlapping courses in the same classroom at the same time, lyceum ("little-red-school-house"-style).

Attendance:

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.

The instructor will be on telephone standby jury duty for part of the beginning of the semester. All meetings of the class will be held, whether or not the instructor is present. Students will be given instructions on what to do in such circumstances.

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.

Grading Policy:

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.

Projects

Each student will participate in multiple projects, some of which must be done as group efforts. For students taking 6 credits each in the Fall and in the Spring, a minimum of three full development projects must be completed successfully during the academic year. For students taking 3 credits each in the Fall and Spring, a minimum of 1 full research project must be completed successfully during the academic year. In addition each student taking 3 credits each in the Fall and Spring must act as a consultant to the students working on the development projects.

Students will have three weeks to explore alternative projects, to form groups, to acquire their books and hardware and create workable Linux development environments.

In the 4th 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.

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. The text is oriented towards java, and java is fast becoming a major production tool. However, some projects may 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:

http://www.cs.cornell.edu/Courses/cs414/2002SP/tutorials/cforjava.htm

from the Cornell University CS414 Operating Systems course by Emin Gün Sirer. Our thanks to Georgi Kitchoukov for pointing out this useful resource.

Summary of Java

Click here for a summary of java.

Secure Remote Access with GUI

Using VNC via SSH: vnc.html

Dowling Computer Club

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

Useful Links


Updated 26 January 2006.