CSE-2041A
Net-Centric Computing

York University
Fall 2012
Syllabus
Instructor: Parke Godfrey
Office: #2050 LAS (CSE)
Office Hours: We 2–4pm
& by appointment / availability
Ph#: 416-736-2100 x66671
e-mail: godfrey@cse.yorku.ca
T.A.: Nikolay Yakovets
e-mail: hush@cse.yorku.ca
Term: Fall 2012
Time: [Lecture] Mo, We, & Fr 11:30-12:30pm
[Lab] Tu 11:00-14:00pm
Place: [Lecture] CB #129
[Lab] LAS (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). Supplimental readings made available will be assigned.

 
  Grading Criteria & Course Requirements
Components
What % When
Test #1 15% Tu 2 Oct.
#2 15% Tu 23 Oct.
#3 15% Tu 13 Nov.
Lab Reports 7 × 1% seven, due at end of lab
Issue Essays 8 × 1% eight, due before each Wednesday's class
Project 20% due last day of classes (Monday 3 Dec.)
Final Exam 20% In Dec. during the exam period
Tests

Tests take place on Tuesdays during the scheduled lab time at the lab's location (CSE #1002). 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)

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 Wednesdays (& Issue Essays)

Wednesdays are dedicated to special issues related to what we are studying. Wednesdays' “lectures” are meant to be particularly interactive with discussion.

Before each Wednesday discussion, a small reading or challenge related to the issue will be posted. Also, a question related to the issue will be asked. You are to address the question in up to half a page (an "essay") and turn it in before Wednesday'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.

Final Exam

The final exam will take place in the lab, and is the same format as the tests. It is cumulative, however.

 
  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 issue readings
I. Infrastructure
#1 5 Sept.–11 Sept. Introduction
Networks
Lab #1: Networks   Sections 1.1–1.6
#2 12 Sept.–18 Sept. Databases
 
Lab #2: Databases Issue #1  
Database & SQL notes
#3 19 Sept.–25 Sept. Markup
 
Lab #3: Markup Issue #2 Sections 2.3-2.7
Markup Notes
II. Server-side
#4 26 Sept.–2 Oct. Web Servers
 
Test #1 Issue #3  
Web Server Notes
#5 3 Oct.–9 Oct. Web Apps
 
Lab #4: Server-side I   Section 2.9
Web-App Notes
Monday 8 Oct.: Thanksgiving (no class)
#6 10 Oct.–16 Oct. Architecture
 
Lab #5: Server-side II Issue #4  
Architecture Notes
III. Client-side
#7 17 Oct.–23 Oct. CSS
 
Test #2 Issue #5 Chapter 3
CSS Notes
#8 24 Oct.–30 Oct. JavaScript
 
Lab #6: Client-side I   Chapter 4 as reference &
Chapter 5
Reading Week: 31 Oct.–4 Nov.
#9 5 Nov.–6 Nov. JS & DOM
 
Lab #7: Client-side II    
JavaScript Notes
#10 7 Nov.–13 Nov. DOM
 
Test #3 Issue #6  
DOM Notes
(Last day to drop is Friday 9 Nov.)
IV. Mobile Apps & Web Science
#11 14 Nov.–20 Nov. Mobile Apps
Widgets
Widgets, Project I Issue #7  
Widget Notes
#12 21 Nov.–27 Nov. Mobile Apps
Infrastructure
Project II Issue #8 BB Notes
& Project Notes
#13 28 Nov.–3 Dec. Web Science
 
no lab    
Web Science 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

Conversion from numeric to letter grade is applied to the overall mark only according to York University's 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.