CSE-2041A
Net-Centric Computing

York University
Fall 2011
Syllabus
Instructor: Parke Godfrey
Office: #2050 CSE
Office Hours: Tu 3-5pm
& by appointment / availability
Ph#: 416-736-2100 x66671
e-mail: godfrey@cse.yorku.ca
T.A.: TBA
Term: Winter 2011
Time: [Lecture] Mo, We, & Fr 11:30-12:30pm
[Lab] Tu 11:00-14:00pm
Place: [Lecture] BC #215
[Lab] CSE #1002A
Textbook: Jeffrey C. Jackson
Web Technologies: A Computer Science Perspective
Prentice Hall, 2007
ISBN-10: 0131856030
ISBN-13: 9780131856035
Class URL: http://www.cse.yorku.ca/course/2041/
  About the Course
The Topic (from the academic calendar)

Introduction to computer networks, databases, client-server computing, web technologies, and mobile apps. Applications include

  • developing simple webapps;
  • connecting to databases via JDBC and SQL;
  • creating HTML pages with CSS and JavaScript; and
  • building apps for mobile devices such as the BlackBerry.

Issues related to computer security are covered throughout.

Expected Learning Outcomes (ELOs)

Using interactive pedagogy in lecture and experiential learning in the lab, the course covers the following topics.

  1. Infrastructure
    Networks, Databases, and Markup Languages
  2. Server-side
    Servers, Webapps, and Architecture
  3. Client-side
    CSS, JavaScript, and DOM
  4. Mobile Apps & Web Science
    Mobile Apps and Web Science

The expected learning outcomes (ELOs) are broken down per topic below. After completing a topic, the student is expected to be able to achieve the tasks listed after it. All assessment tools in the course are based on these ELOs.


  1. Infrastructure
    1. Networks
      1. Name the five layers in the Internet model (that is, TCP/IP Protocol Suite), describe the role that each plays, and provide examples of the protocols. Justify the use of layers and explain the terms: protocol, MAC address, IP address, port number, DNS, state-less protocol.
      2. Given a computer, use tools to answer questions about its connectivity. The tools may include: wireshark, ping, tracerout; ip / if config, netstat; and DNS commands.
      3. Explain how HTTP works and describe its syntax, methods, and various headers. Use telnet to connect to a given http server and capture its response. Use firebug to analyze http traffic.
      4. Describe the four main goals of network security and provide a few examples of security attacks.
    2. Databases
      1. Justify the need for DBMS, given that programming languages come with rich I/O libraries, and define the meaning of the terms: DDL, DML, DBA, multi-tier DBMS architecture, and concurrency.
      2. Describe the syntax of the SQL SELECT statement and explain the significance of the various keywords, clauses, and functions associated with it; e.g., distinct, where, order by, group by, having, like, count(), length(), substr(), etc.
      3. Given the URL of a database, use a frontend to connect to it and generate a report based on a given requirement.
      4. Given the URL of a database, write a Java program that connects to it via JDBC and retrieves information from, or adds a row to, a given table.
    3. Markup
      1. Describe the syntax rules of HTML and explain the difference between well-formed and valid. State the meaning of the html-related terms: element, attribute, root, whitespace, entity and character references, and an empty element.
      2. Explain the difference between semantic markup (HTML) and presentation (css). Define the terms: article, section, header, footer, aside, nav, address, and time.
      3. Create an HTML page with a specified content and structure. The specs may involve lists, tables, and a variety of fundamental elements such as anchors and figures.
      4. Create an HTML page that contains forms. Each form may include buttons, various input elements, and template text.

  1. Server-side
    1. Servers
      1. Describe in general what web servers do, and explain in detail the steps taken by a web server when a request for a static page arrives.
      2. Configure a directory so that Apache can serve its content when requested.
      3. Add confidentiality to the above configuration.
      4. Add authentication to the above configuration.
    2. Webapps
      1. Compare and contrast serving a static page versus a dynamic one. Explain the steps that a web server takes to respond to a dynamic page request.
      2. Write a CGI script that responds to a FORM according to a given functionality; e.g., determine if a parameter is a prime number after validating it.
      3. Describe how a code injection attack works and demonstrate by building an example.
      4. Explain the meaning of the terms: phishing and spoofing in the context of web security and demonstrate by building examples.
    3. Architecture
      1. Explain how cookies can be used to maintain a session over a stateless protocol. Describe other mechanisms for managing and persisting sessions.
      2. Describe multi-tier computing and state its advantages. Apply by building a 3-tier webapp that involves forms, session management, and a database.
      3. Describe how a SQL injection attack works and demonstrate by building an example.
      4. Explain the MVC Design pattern and the three approaches to developing web applications.

  1. Client-side
    1. CSS
      1. Describe in general terms the capabilities of style sheets and the main advantages of using them.
      2. Explain the syntax of CSS rules and define its associated terminology. In particular, describe how selectors can be combined and provide examples that use tags, IDs, classes, and pseudo classes.
      3. Given one or more style sheets and an HTML document, use cascading and inheritance rules to determine how a particular element should be styled.
      4. Create a CSS so that a given HTML document will be rendered in a specified way.
    2. JavaScript
      1. JavaScript is a dynamically typed language. Explain the meaning of this by contrasting JavaScript with a statically typed language. Provide examples of JavaScript types and how they are determined and converted.
      2. JavaScript supports functional programming. Describe the functional capabilities of this language and show how functions can be used to implement abstraction.
      3. JavaScript is object based but is different from traditional object-oriented languages. Explain this difference and provide examples of JavaScript objects, object creation, and object-related capabilities.
      4. Write a JavaScript program that implements a given functionality.
    3. DOM
      1. Explain the DOM view of a document and provide examples that demonstrate the DOM API.
      2. Describe the event model and provide examples of intrinsic and DOM events.
      3. Build a client-side system capable of displaying a form and validating its fields before submission. Use a variety of events (such as onsubmit and blur) and a combination of alert and DOM to display error messages.
      4. Create a JavaScript program to implement a given user interface functionality. The functionality can include displaying or modifying the DOM tree of the current document.

  1. Mobile Apps & Web Science
    1. Mobile Apps
      1. Explain the difference between AJAX and form submission.
      2. Create a BlackBerry widget that uses AJAX to communicate with a server-side webapp which, in turn, communicates with a database server.
      3. Explain the widget development cycle including the use of simulators, widget signing, and app loading.
      4. Build a widget the uses local features on the BlackBerry smartphone.
    2. Web Science
Required Textbook / Reading

Course materials will be primarily drawn from the assigned readings from the course textbook (Jackson, 2007). Some supplimental readings made available will be assigned.

 
  Grading Criteria & Course Requirements
Components
What % When
Test #1 22% Tu 4 Oct.
Test #2 22% Tu 1 Nov.
Test #3 22% Tu 22 Nov.
Lab Reports 8 × 1% eight, due at end of lab
Topic Essays 10 × 1% ten, due before each Friday's class
Project 16% due last day of classes (6 December)

The tests take place on Tuesdays during the scheduled lab time at the lab's location (CSE #1002).

There is no final exam for the course.

Tests

Tests will take place during lab time in the lab. They will test you in a hands-on way on the material that you have covered in the labs, reading, and lecture.

Labs & Lab Reports

The labs are central to this course. At the end of each lab will be a small deliverable, as a proof that you have done the lab exercise, and understand the concepts.

Discussion Fridays & Topic Essays.

Fridays are dedicated to special topics related to what we are studying. Fridays' lectures are meant to be particularly interactive with discussion.

Before each Friday discussion, a small reading or challenge related to the topic will be posted. Also, a question related to the topic will be asked. You are to address the question in up to half a page (an "essay") and turn it in before Friday's lecture.

Project

The project will pull together much of what is covered in the course. It will involve developing and fielding a mobile app for a blackberry smart phone.

 
  Schedule

This schedule is a static copy, for reference, as of the first day of classes. See the active schedule on the class's home page for links to notes, modifications, etc., as the term progresses.

week# days topics lab Discussion readings
I. Infrastructure
#1 7 Sept.–13 Sept. Introduction
Networks
Lab #1: Networks   Sections 1.1–1.6
#2 14 Sept.–20 Sept. Databases
 
Lab #2: Databases Topic #1  
Database & SQL notes
#3 21 Sept.–27 Sept. Markup
 
Lab #3: Markup Topic #2 Sections 2.3-2.7
Markup Notes
II. Server-side
#4 28 Sept.–4 Oct. Web Servers
 
Test #1 Topic #3  
Web Server Notes
#5 5 Oct.–18 Oct. Web Apps
 
Lab #4: Server-side Topic #4 Section 2.9
Web-App Notes
Reading Week: 8-14 Oct.
#6 19 Oct.–25 Oct. Architecture
 
Lab #5: Beast Topic #5  
Architecture Notes
III. Client-side
#7 26 Oct.–1 Nov. CSS
 
Test #2 Topic #6 Chapter 3
CSS Notes
#8 2 Nov.–8 Nov. JavaScript
 
Lab #6: Client-side Topic #7 Chapter 4 as reference &
Chapter 5
Last day to drop is 11 Nov.
#9 9 Nov.–15 Nov. DOM
 
Lab #7: Attack! Topic #8  
JavaScript Notes
IV. Mobile Apps & Web Science
#10 16 Nov.–22 Nov. Mobile Apps
 
Test #3 Topic #9  
Widget Notes
#11 23 Nov.–29 Nov. BB Widgets
 
Lab #8: Widgets Topic #10  
BB Notes
#12 30 Nov.–6 Dec. The Project
 

Project

   
Project Notes

 
  Policies
Exams & Attendance

Exams must be taken when scheduled unless the student has a medical documentation or can demonstrate special circumstances for a need for a rescheduled exam. The student must obtain approval from the instructor.

Lecture attendance is useful and encouraged as the student will have an opportunity to ask for clarification of course and text material. Topics will be discussed in lecture, and examples shown. Lab attendance is really needed to gain a strong working knowledge of the material, and to earn the lab-report marks.

Grading

Exams Conversion from numeric to letter grade is applied to the overall mark only according to following standard:

F E D D+ C C+ B B+ A A+
< 40 ≥ 40 ≥ 50 ≥ 55 ≥ 60 ≥ 65 ≥ 70 ≥ 75 ≥ 80 ≥ 90

York University's official interpretation of grades.
Academic Integrity / Honesty / Plagiarism

The Department of Computer Science (& Engineering) Academic Honesty Guidelines are in effect for this course, as, indeed, they are for any CS&E course.

Plagiarism is defined as taking the language, ideas, or thoughts of another, and representing them as your own. If you use someone else's ideas, cite them. If you use someone else's words, clearly mark them as a quotation. Note that plagiarism includes using another's computer programs or pieces of a program. All noted instances of plagiarism will be reported.

These policies are not intended to keep students from working with other students. One can learn much working with others, so this is to be encouraged. Should you encounter any situations for which you are uncertain whether the collaboration is permitted or not, please ask.