Syllabus for Up and Coming programming languages Seminar (Fall 2007)

Instructor: Dr. John F. Santore
Phone: 508-531-2226
Office: Hart 220

Instructor Web Page: http://webhost.bridgew.edu/jsantore/
Course Web Page: http://webhost.bridgew.edu/jsantore/Fall2007/Seminar/

Office Hours: I also will take appointments if you cannot make my other office hours, however, I generally have meetings and work prepared for a day or two ahead so plan on about 48 hours from the time I get your request to us being able to meet.

Course Description:

Currently, the ruby programming language and its accompanying application framework (ruby on rails) is generating a great deal of attention from the enthusiast community and even from the technical press. This is reminiscent of the attention that Java received in the early-mid 1990's. Python is seeing a growing market and mindshare while receiving a smaller amount of press. Java, since the mid 1990s has since become a widely used programming language in both eduction and the world at large, seeing use in everything from toy web-based applications to embedded systems to large applications for the business desktop. However, the same adulation was also once lavished upon programming languages with names like smalltalk, Eiffel, pearl and others. All of these languages were at one time poised to be “the next big thing” but ended up being niche players with small but devoted followings. This seminar will guide upper level students as they investigate the ruby and python programming languages. Students will decide if they think ruby or python will be the next big thing or if both will just be another neat language that didn't quite take off. Students in this seminar will be responsible for presenting at least once in the class. Students will also write programs and papers summarizing their experience with the language and their assessment of its potential. There will be flexibility in grading so that those who are good programmers and those who are good writers will both have an opportunity to do well in the course. This seminar will be appropriate for both majors and non-majors who have taken at least COMP102. (Computer Science majors are encouraged but not required to have COMP 330 as well).


Beginning Ruby: From Novice to Professional by Peter Cooper. ISBN -1590597668

Core Python programming by Wesley J. Chun. ISBN 0-13-226993-7

These are the two required books. In addition there will be other handouts and books on reserve in the library to support this class.

Class Requirements and grading:

Programming projects: 35%
Papers: 35%
Presentation: 10%
Exam: 10%
Everything else (mostly participation and demonstrating that you understand the material regularly): 10%

Project work:

Since you can't really understand a programming language without working with it and writing programs in that language, there will be several projects in this class allowing you to work with both languages from simple programs to more complex programs. The tentitive assignment schedule is listed below. We will alternate python and ruby assignments for the first several assignments. Then you will be allowed to implement the last assignment in which ever of the two languages you liked best based on your experience with them in earlier labs.


This is a seminar class where students will attempt to answer the question: will one of these languages become a major (or even the major) programming language in the next 5-10 years. Since we can't know the future, we must extrapolate from the facts that we have. Good communication is key to being an effective computer scientist. Many organizations rely on paper communication to make points and transmit information. We will therefore be writing several papers in this class to try to address aspects of this question. The papers should be written in a scholarly style, backing up opinions with refererences to sources that have some pledge of accuracy. (someone has actually staked their own reputation on the fact that the information is accurate - this means that blog comments, wikipedia and similar anonymous internet postings are not acceptable as references - though they may be referred to in papers, they should be given the same credance as a rumor). There will be three papers. The first two will be due during the semester and will be woth 7% of your grade each. The last will take the place of the final (I already have the permission of the dean to replace the regularly scheduled final with this paper) and will be worth 21% of your final grade. 


This is a seminar class. That means that the students will be leading the discussion and presenting some of the features of the language. We will all be expected to understand the entire course, but after the first couple of weeks, each student will be responsable for leading the discussion and presenting some topic from one programming language or other. You will be expected to be the expert on that topic. Of course the instructor will have covered the same material in case of misunderstandings, but each student will present their material. We will have some time each class for a discussion of the importance of the features and how well they are implemented in each languages. Your presentation will be worth 10% of your grade. Sign-up sheets for presentation times and topics will be availble by the second day of class.


There will be one midterm exam in this class. It will be worth 10% of your grade and will be focused on making sure that you retain enough of the material in an in-class evaluation setting. The exam is scheduled for  Oct 31st

Everything else (participation mostly):
Once again, since this is a seminar, participation and give and take among the participants is important for the class. This means things like being prepared each day for the topic at hand and being ready to respond to questions/discussions on the topic of the day and its relation to previous topics.

Students with special needs:

Anyone who has special needs should contact me in the first week of classes so that reasonable accommodations can be agreed on.

Academic Integrity:

See  http://www.bridgew.edu/Handbook/PoliciesProcedures/academicintegrity.htm for a complete description of the academic integrity procedure at Bridgewater.

Academic integrity will be taken very seriously in this class. All individual work must be your own. If you cheat or otherwise represent the work of others as your own. You will receive an F for the course.

Guidelines for proper academic integrity:

Discussing problems with your classmates can help you understand the problems and kinds of solutions to those problems that you will learn about in this class. In an effort to make in clear what sort of discussions are appropriate and encouraged in this class and which cross the line to academic dishonesty I use the following guidelines: You may discuss any out of class problem I assign in this class with your classmates or other so long as no one is using any sort of recording implement including, but not limited to, computers, pdas, pens, pencils, phones etc. This lets you talk about theoretical solutions without sharing the actual implementations. As soon as anyone in the group is typing, writing etc, all conversations must stop. You may look at someone else's program code only very briefly in order to spot a simple syntax error. As a rule of thumb, if you find yourself looking at someone else's code for more than about 30-45 seconds it is probably time to stop. If you are having trouble with your program, come to the instructors office hours for more help.

All in class exams and quizzes are closed book and closed neighbor unless the class is explicily told otherwise. If you are found using a data storage device of any kind during one of these evaluations, you will be failed for the course.

The papers are to be your own work. I can and often do type entire sentances into google to see if someone else has written the same thing. Large segments of "your" paper being on-line with someone elses name attached will result in an academic integrity hearing.  

Standards for in class behavior:

You are all adults and are expected to act as adults in this class. While questions are encouraged in this class, if a particular line of questioning is taking us too far afield, I will ask the student to come by my office hours or to see me after class.

Cell phones, pagers, electronic organizers and other devises should be silenced while in class. If you work of EMS or something similar, please turn your cell phones/ pagers etc to vibrate mode so that you are not disrupting others in the class.

In the unlikely case of trouble makers in the class, those who are simply attempting to disrupt the class will be asked to stop; those who will not, will be referred to the college for appropriate action.

I do not take regular attendance. Because of the census day regulations, I'll have to take occasional attendance. You are adults and are paying for this class. If you miss a class, you are expected to get notes from a classmate and familiarize yourself with the material that was covered before returning to class. I do find from dealing with students in the past that attendance at lecture (and paying attention rather than surfing the web the whole class) is highly correlated with doing well in my classes.

Mon Wed Assignment
XXX Introduction and Syllabus
Introduction to python Syntax More Python Syntax Assign1: simple Python
Introduction to Ruby Syntax More Intro Ruby Assign1 due,
Assign2: Simple Ruby
Python Sequences and Maps Python file handling and Exceptions Assign 2 due
Paper 1: initial impressions
Python: tkinter module Python: pygame module Paper 1 Due
Assign3: Python with a GUI/graphics
Columbus Day - no class
Ruby: Ruby on Rails I Ruby: Ruby on Rails II Assign 3 Due
Assign 4: Ruby on Rails project
Ruby Paper 2: where is CS going and what
features do we need in a programming language today?
Python: python with the web Exam
Assign 4: Due
Python:sockets/Networking Ruby:sockets/networking Assign 5:choose the language
Paper 2 due
Veteran's Day - no class Python/Ruby
Python Ruby
Python Ruby Assign 5 Due
Python Ruby Final Paper assigned
Wrapup discussion Reading Day Final paper due during finals week.