| Assignments | Contact Info | Computer Club |

23552 CSC 3971N - Advanced Programming I

Spring 2013
Online Course
Herbert J. Bernstein ( )



This web page is http://www.bernstein-plus-sons.com/.dowling/CSC3971S13/CSC3971_Syllabus.html
Copyright © 2007, 2011 Herbert J. Bernstein and other parties. All rights reserved.

This is the syllabus for CSC 3971N for Spring 2013. As the course moves forward, students should return to this page frequently for updated material.

Catalog description:

CSC 3971N. Advanced Programming I

3 credits

A project-oriented pair of courses intended primarily for juniors and seniors in the Computer Science major and for others who wish to improve their programming skills and knowledge of data structures and algorithms. Emphasized is a systematic approach to the design, implementation, testing and debugging of software systems. Students will complete several programming projects in modern programming languages throughout the semester. Prerequisite for CSC 3971N: CSC 2025A or permission of the Mathematics and Computer Science Department chair. Prerequisite for CSC 3972N: CSC 3971N or permission of the Mathematics and Computer Science Department chair.

Prerequisites:CSC 2025A Minimum Grade of D-

This Spring 2013 section is:

Associated Term: Winter/Spring 2013
Registration Dates: Nov 08, 2012 to May 13, 2013
Levels: Undergraduate
Instructors: Herbert J. Bernstein (P)

Dowling On Line Campus
Lecture Schedule Type
On Line Instructional Method
3.000 Credits
View Catalog Entry

Scheduled Meeting Times
Type Time Days Where Date Range Schedule Type Instructors
On line TBA   Internet teaching on line LINE Jan 28, 2013 - May 13, 2013 Lecture Herbert J. Bernstein (P)E-mail


Office Hours:

Students have the option of meeting with the instructor either on-site or via Skype. In order to avoid conflicts with other students and other obligations of the instructor, if possible please make an appointment via email.

Note that, in general, Dr. Bernstein will be at the Brookhaven campus on Tuesday, Thursday and Friday afternoons and on the Oakdale campus on Wednesday afternoons. Meetings on the Oakdale campus will be in KSC 103.

For more information see http://www.bernstein-plus-sons.com/.dowling/HJB_Contact_Info.html.

Required Textbooks:

Recommended Text:

  • Donald Knuth, "The Art of Computer Programming" V1-4, 3rd ed., Boxed set, Pearson, 2011, ISBN 9780321751041.

    Knuth is highly recommended reading for all computer science students.

    Required Materials

    Students are expected to have their textbooks no later than the second week of the semester. Students can start learning some of the material for the course immediately by going to the MIT OpenCourseWare site and reviewing the lectures at http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-087-practical-programming-in-c-january-iap-2010/ and http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-096-introduction-to-c-january-iap-2011/ and http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-092-introduction-to-programming-in-java-january-iap-2010/

    Required Computer Accounts:

    Each student has a Dowling College email account. In addition, each student is required to sign-up for a Google gmail account, so that they will have access to Google Sites and Google Blogger (blogspot.com). There will be a common course blog at http://yayahjbcsc3971s13.blogspot.com. In addition, each student is required to maintain their own blog for the course. Once you have a gmail account, you should create a blog for the course using your gmail user name followed by CSC3971S13. You will use the blog to discuss your own progress and to maintain useful brief notes for the course.

    You will also need a Google Sites account to post your assignments and to maintain notes that are not appropriate for your course blog. Each student is required to maintain their own course web site, to which they will post their assignments, avoiding the need for attachments in email. Once you have a gmail account, you should create a Google Sites course web page using your gmail user name followed by CSC3971S13. In addition, you should create a second Google Sites course web page using your gmail user name followed by CSCPorfolio. For example, if your gmail name is mugwump, then you assignments site should be named mugwumpCSC3971S13 and your portfolio site should be name mugwumpCSCPortfolio.

    ou are required to do a project to add to your permanent portfolio to complete this course. See the new Dowling College Computer Science Portfolios policy.

    Recommended portfolio projects: for almost all students, independent of the career track they will pursue, the best initial projects are interactive games, preferably with graphics. Writing such games develops and hones programming skills and results in credible additions to the portfolio. The best projects to complete in the more advanced courses are ones that help in understanding the content of the course and also help to build skills relevant to the students chosen track.

    For students planning to go on to graduate school in CS, projects should be chosen to demonstrate both breadth and depth of knowledge about computer science and about important application domains such as mathematics, statistics, physics, chemistry, biology, etc. Examples include programs for structural homology, modeling of robots, applied mathematics, etc. For applicants to graduate school, research projects that result in scientific meeting presentations and/or papers published in scientific journals are particularly desirable. Examples from past research projects include work on validation of scientific data, data representation for arrays of pixel data and rendering of molecular surfaces.

    For students pursuing a software engineering track, large cooperative projects such as the design of a course advisement system, large simulations, sophisticated video games, major software libraries, social networking web sites, etc. are most appropriate for students planning to work in information systems in business or government. Projects that demonstrate a grasp of modern business programming and data management are the best, with components ranging from small scripts to large systems. Example projects include amortization of bond premiums, travel expense management systems, time and effort reporting systems, web apps for contact management, accounts receivable systems, student advisement systems, automated training systems and trouble ticket tracking systems.

    For students planning to work in information technology, projects that demonstrate an understanding of user interface issues, help desk issues, network and web app issues and hardware management issues are best. Examples include a trouble ticket cell phone app, a customer support web site with database-backed query interface, a help desk support web site with trouble ticket interface, a computer/network failure support cell phone app, a calendaring and scheduling app, among others.

    Students who are not certain of their career direction should try a variety of projects from different tracks.


    The project posted must be new and original. All students, whether intersted in CS, SE, IS or IT should do a computer emulator. You should think terms of a project you would like to show to a prospective employer or graduate school. Your name will be on it, and everybody in the world will be able to see it and try it. Your skills will be on display for everybody to see. Do a good job.

    I regret the need to remind all students that Dowling policy does not condone plagiarism or other forms of academic dishonesty. Be very careful to clearly identify and credit all work that you use that comes from sources other than your own creative efforts. Failure to follow this requirement will result in the zeroing of all credit for all work done for this course and the requirement to redo all the work over again from scratch.


    This is an online class, with no on-site meetings. The major risk in taking an on line course is in failing to make steady progress through the semester. Therefore, all students are required both to demonstrate their progress with on-line quizzes and to attend at least one online meeting every 2 weeks with the instructor to discuss the work they are doing for this class. Students are encouraged to schedule these online meetings in groups via Skype, but they may meet the requirement with individual Skype meetings or by on-site meetings during office hours.

    Students who fail to maintain regular contact with the instructor prior to the midterm will get a midterm warning and be advised to withdraw from the course.

    Grading Policy:

    Your objective in this course is to polish your programming skills until you are fluent in multiple languages.

    Students will be given weekly quizzes and assignments to help ensure regular attention to the material of the course.

    In addition to routine reading assignments, students will have two kinds of special assignments: ones that will help them to explore programming in practice and ones that will help them to study a particular programming task in depth. Students have one week from the start of the semester to propose a significant topic within which they will explore programming tasks. If no proposals are made, the instructor will make assignments involving the following threads: molecular graphics, nearest neighbor problems, numerical linear algebra. Students are encouraged to form study groups that share efforts on the major topic, but each student must display their own programming skills both on portions of the practical programming assignments and on portions of the major topic. This does not have to be your portfolio project, but it makes sense for it to be related to your portfolio project.

    The study assignments will be handled by each student creating a web page lecture on that topic for the instructor and other class members to review.

    You will have to do these assignments multiple times.

    Every student will be required to maintain a contemporaneous hardbound notebook and blog recording all significant activities related to this course.

    The work load for this course is very heavy. Students are encouraged to form study groups and to work together. You may rech out to other students by sending email to the instructor to forward to the class.

    In general, no assignments will be accepted late and no makeups will be given for missed quizzes or examinations. Requests for exceptions to this policy will be considered only for the most pressing reasons (illness requiring hospitalization, death in the family, reserve call-up, etc.) and must be submitted in writing in a timely manner. They will be granted only if the instructor has sound reason to believe that the student is highly likely to master the material of the course within the current semester.

    Course Syllabus

    Course Objectives

    Please consult the course assignments page frequently.

    Review of Java

    Click here for a review 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.

    Updated 28 January 2013.