CSC 253/453 Dynamic Language & Software Development
Prerequisites: CSC 252 and CSC 254 are required for CSC 453 and recommended for CSC 253. Familiarity with a dynamic programming language such as Python is required for CSC 253.
Crosslisted: TCS 453 (same requirement as CSC 253)
This course studies dynamically-typed programming languages and modular software development. Topics include principles and practice of modular design, functional and object-oriented programming techniques, software engineering concepts, software correctness and reliability, programming tools, and design examples. Ruby is used as the main instruction language. The lessons complement those in traditional compilers and programming languages courses, which focus mainly on statically-typed languages and individual algorithms rather than system design. A significant portion of the assignment is a group project.
Teaching Staff and office hours: Prof. Chen Ding, Fridays 11am to 12pm in Wegmans Hall 3407, x51373. John Jacob, 1pm to 2, Tuesdays, in the corner next to Wegmans Hall 3409. Zhizhou Zhang, 3:30pm to 4:30, Thursdays, Wegmans Hall 3407, x51373.
Grading:
- mid-term and final exams, 15% each
- two written homeworks, 5% each
- assignments and projects, 60%
Preparation (before first class):
“No Silver Bullet — Essence and Accidents of Software Engineering” is a classic paper on software engineering written by Turing Award winner Fred Brooks in 1986. Read the paper (available here if accessed inside the UR network) especially pages 3 to 5 on the “essential difficulties” of software development.
“A former member of the SD10 Panel on Computing in Support of Battle Management explains why he believes the ‘star wars’ effort will not achieve its stated goals.” Read the paper (available here if accessed inside the UR network) pages 2 to 4 the section titled “Why software is unreliable.” Which of the “essential difficulties” was Parnas discussing?
More background of this debate, detailed rationales and an illuminating discussion of the ethical issues can be found in another article of Parnas: “SDI: A Violation of Professional Responsibility”. The article does not seem to have a free version online, but you can read it by borrowing the book “Software Fundamentals” (included as Chapter 27) from the textbook reserve for CSC 253/453 at the Carlson Library. The lease is two hours.
Further material will be distributed through the Blackboard web site for students who have registered. Contact the instructor if you have problem accessing the site.
Textbooks (online access at learn.rochester.edu > CSC 253 > Reserves > Materials on Reserve in the Library):
Software fundamentals : collected papers by David L. Parnas Author: Parnas, David Lorge. Imprint: Boston : Addison-Wesley, 2001. On Reserve at: Carlson Library Reserve Desk 2nd Floor Call Number: QA76.754 .P365 2001 |
Programming Languages: Application and Interpretation (http://cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26/)
Copyright © 2003-07, Shriram Krishnamurthi
(Also see Prof. Findler’s course EECS 321 at https://www.eecs.northwestern.edu/~robby/courses/)
Object-oriented Software Engineering
Author: Schach, Stephen R.
Imprint: New York : McGraw-Hill, c2008.
Available at school book store. On Reserve at: Carlson Library Reserve Desk 2nd Floor
Design patterns in Ruby [electronic resource] Author: Olsen, Russ. Imprint: Upper Saddle River, NJ : Addison-Wesley, c2008. On Reserve at: Internet |
Other Materials
Ruby under a microscope [electronic resource] : an illustrated guide to Ruby internals Author: Shaughnessy, Pat. Imprint: San Francisco : No Starch Press, [2014] Available at school book store. Also on Reserve at: Internet |
Fundamentals of software engineering Author: Ghezzi, Carlo. Imprint: Upper Saddle River, N.J. : Prentice Hall, c2003. On Reserve at: Carlson Library Reserve Desk 2nd Floor Call Number: QA76.758 .G47 2003 |
PROGRAMMING LANGUAGE PRAGMATICS, 3rd ed
Author: Scott, Michael L.
On Reserve at: Carlson Library Reserve Desk 2nd Floor
Call Number: CRL PersCpy
Topics:
See schedule