CR: COMP 2405 Learning Objectives: Difference between revisions

From Soma-notes
Line 41: Line 41:
==Dynamic languages==
==Dynamic languages==


JavaScript, PHP
Focus on JavaScript, but potentially also cover a server-side scripting language (PHP or Python).
 
* Prototype-based objects
* Closures


==Databases==
==Databases==

Revision as of 14:18, 17 May 2011

Calendar Description

Current description:

Internet Application Programming

Design and implementation of Internet application programs. Topics include: fundamentals of the Web, introduction to client/server architectures, Internet programming, Web browsers, hypertext links, network programming.


New description:

An introduction to the upper computational stack: language-based virtual machines, desktop environments, and web applications. Topics: dynamic libraries, scripting and functional languages, interpreters, compilation, databases, remote procedure calls, and performance and security concerns in modern distributed applications.

Assumed Background

Students should:

  • know how to program imperative and object-oriented programs (Java-style), to the point of creating simple GUI-based programs and implementing standard simple data structures (lists, trees) and associated algorithms (search).
  • have some background in systems programming, particularly UNIX systems programming. As such, they should know about processes and threads as abstractions and should be exposed to concurrency and network sockets.
  • have interacted with modern websites.

Learning Objectives

  • Be able to partition distributed application functionality between client and server in order to make appropriate trade-offs for latency, bandwidth, reliability, and security.
  • Learn how to use closures and other meta-programming methods to create efficient, expressive programs in a distributed systems context.
  • Understand how to create and use databases as a persistent store for distributed, online applications such as web applications, including how to design schemas that are both scalable and reliable.
  • Be able to choose whether an SQL or a NoSQL-type database is appropriate for a given application.
  • Learn how to create efficient code (in time and space) in dynamic languages such as JavaScript and PHP.
  • Be able to implement a simple yet responsive (low-latency user interaction) web application consisting of client side code, server side code, and a database for a persistent store.
  • Be able to create distributed applications that do not contain common security vulnerabilities such as cross-site scripting, cross-site request forgery, and SQL injection attacks.
  • Learn how to choose appropriate data representation and exchange protocols for distributed applications, including the trade-offs between using XML, JSON, and custom representations.

Topics

Dynamic languages

Focus on JavaScript, but potentially also cover a server-side scripting language (PHP or Python).

  • Prototype-based objects
  • Closures

Databases

SQL vs. noSQL

Distributed application architecture=

AJAX, latency and bandwidth

Security