NCSU brick logo

CSC/ECE 517: Object-Oriented Languages and Systems

Fall 2007

about this course

This course is a survey of the ethical issues involved in computing. It discusses the way that computers and software pose new ethical questions or pose new versions of standard moral problems and dilemmas. It stresses case studies that relate to ethical theory.

The Staff

instructor

teaching assistant

  • Xinxin Sheng
  • Office: 2259 EB2
  • Office hours:
  • 2:15-3:15 F
  • xshengncsu.edu

Important dates

  • First class: Wednesday, August 22
  • Last class: Friday, December 7
  • No class: 10/12/2007 (Fall Break) & 11/23/2007 (Thanksgiving)
  • For more details, see the academic calendar.

Class meetings

Wednesday and Friday 12:50-2:05 in Monteith 313

Catalog entry

Text

REQUIRED
Head First Design Patterns
by Eric Freeman, Kathy Sierra, Bert Bates, Elisabeth Freeman
Publisher: O'Reilly
Paperback
ISBN: 0596007124
Pub. Date: October 2004

REQUIRED
Programming Ruby: The Pragmatic Programmers' Guide (Pragmatic Programmers Series) by Dave Thomas, Andy Hunt, Andrew Hunt, Chad Fowler, Chad Fowler
Publisher: Pragmatic Bookshelf
Textbook Paperback - Revised Edition, Includes 1.8
ISBN: 0974514055
Pub. Date: October 2004

REQUIRED
An Introduction to Object-Oriented Design and Design Patterns Using Java by Dale Skrien ( prepublication copy)
Publisher: McGraw-Hill
Pub. Date: January 2008

RECOMMENDED
Agile Web Development with Rails by Dave Thomas, David Heinemeier Hansson, David Hansson
Publisher: Pragmatic Bookshelf
Paperback
ISBN: 0977616630
Pub. Date: December 2006

Lecture notes

Notes may be downloaded from the Web.

Prerequisites

Officially, CSC 316: Data Structures for Computer Scientists, but an undergraduate degree in computer science, including at least one year of programming in an object-oriented language (e.g., C++) is also sufficient.

Audit requirement

Do one homework, or take one test, before fall break and score at least 50%; then do one homework, or take one test, after fall break and score at least 50%. You can choose which homework or test to take, and if you take one and fail to score 50%, you can try another. If you complete this requirement, you will receive a grade of AU. If you do not fulfill this requirement, your grade will be NR (no recognition).

Homework

Homework will consist of four programming assignments and five peer-reviewed assignments.

The programming assignments will be ...

  • A Ruby assignment, illustrating some of the novel o-o features of the language (4% of grade)
  • A very simple Web application built using Ruby on Rails (4% of grade)
  • A contribution to an open-source programming project (10% of grade)
  • A semester project, done in groups of 3 or 4, which may be either a contribution to an open-source project, a project specified by the instructor, or a project of your own choosing (20% of grade)

All programs may use pair programming (but this is not required).

The four peer-reviewed assignments will be ...

  • A madeup problem, suitable for a back-of-chapter exercise in the Skrien text (4% of grade)
  • Peer review of others' open-source programming projects (this is actually part of the 3rd program, above)
  • Peer review of others' design documents for their semester project (this is actually part of the 4th program, above)
  • Twice during the semester, a contribution to a class wiki which will serve as a comprehensive treatment of a particular aspect of o-o design (e.g., design principle or design pattern); this should make heavy use of material already on the Web (4% each of grade).

Tests and exams

Two midterm tests (15% each of grade) and a final exam (20% of grade) will be given, spaced equally during the semester.

©2007 NC State University | Disclaimer