Difference between revisions of "CR: COMP 2405 Learning Objectives"

From Soma-notes
Jump to navigation Jump to search
Line 46: Line 46:
==Databases==
==Databases==


SQL vs. noSQL
* data models: ER, relational, object, indexing, join
* query languages: SQL, noSQL


==Distributed application architecture===
==Distributed application architecture===

Revision as of 13:48, 1 June 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

Functional programming

  • closures and their applications
  • higher order programming

Databases

  • data models: ER, relational, object, indexing, join
  • query languages: SQL, noSQL

Distributed application architecture=

AJAX, latency and bandwidth

Security