CS 771/871: Web Programming Paradigms
(Coordinator: James Weiner)
- This course is a CS elective.
- methodologies of software development: software architecture paradigms, including client-server, convention over configuration (CoC), don’t repeat yourself (DRY), model–view–controller (MVC) and Representational State Transfer (REST).
- concepts of programming languages: asynchronous programming, declarative and functional languages, event-based languages, dynamic languages, closures and promises.
- principles and techniques of a range of advanced topics in computer science: concurrency based on events rather than threads (node.js), the active record pattern and object-relation mapping (ORM),
- principles of operating systems: client/server paradigms, events (and interaction based on events), web services.
- aware of social and ethical issues related to computing and the computing profession: privacy concerns due to tracking etc. fixing privacy issues with safe technologies e.g. cross-origin resource sharing (CORS).
7 to 10 Programming assignments - (50%), project - (25%), final exam - (25%).
- Declarative Languages: HTML5, CSS, Scalar Vector Graphics (SVG)
- XML Events
- XML Applications: SVG
- Functional Languages
- XML Stylesheet Language (XSLT)
- Document Object Model (DOM)
- Asynchronous Programming with Event-Based Languages
- Dynamic Languages: Ruby
- Web Frameworks: Ruby on Rails, node.js
- MetaProgramming in Ruby
- Lazy Evaluation:
- Sam Ruby, Dave Thomas, and David Heinemeier Hansson. 2013. Agile Web Development with Rails 4 (4th ed.). Pragmatic Bookshelf.
- Dave Thomas, Andy Hunt, and Chad Fowler. 2013. Programming Ruby 1.9 & 2.0: The Pragmatic Programmers’ Guide. Pragmatic Bookshelf.
- Eric A Meyer. 2006. CSS: The Definitive Guide (3rd ed.). O’Reilly Media, Inc.
- Paolo Perrotta. 2010. Metaprogramming Ruby (1st ed.). Pragmatic Bookshelf.
- Wilson, J 2013. Node.js, Pragmatic Bookshelf