Course Syllabus

CS55.13: Server-Side Web Development
Section 0587, Fall 2018 Course Syllabus

This syllabus is available in the following formats:

Photo of Instructor Ethan Wilde

Instructor: Ethan Wilde, ewilde@santarosa.edu

Course Description

This is an introduction to server-side Web development using open source technologies as well as a comprehensive course in the server-side scripting languages such as PHP hypertext preprocessor scripting language. The course covers writing server-side scripts for the Web, such as PHP, procedural and object-oriented programming, Web form management, an introduction to SQL statements and databases. Advanced topics are covered including dynamic generation of content using databases, sessions, cookies, Web services, e-commerce, and authentication. Previous programming experience recommended.

Prerequisites/Corequisites: Course Completion of CS 50A

Recommended Preparation: Eligibility for ENGL 100 or ESL 100; AND Completion of CS 10A

If you are interested in becoming a full-stack web and mobile developer, or just want to master server-side development, mastery of PHP and MySQL is essential to those goals. We will work with current production versions of server-side languages – including PHP and JavaScript – together with database technologies, to become proficient in the creation of fully dynamic Web applications.

Student Learning Outcomes

Students will be able to:

  1. Design server-side solutions to support validation, authentication, business logic, and security.
  2. Develop server-side scripts employing SQL databases to create robust data-driven Web applications.

Upon completion of the course, students will be able to:

  1. Develop server-side scripts for publishing on the Web.
  2. Employ control structures, functions, arrays and hashes to create robust applications.
  3. Design rigorous code for validation and authentication with attention to security and performance.
  4. Write SQL commands and use a database to develop data-driven Web applications.
  5. Create an advanced project using server-side scripts and databases.

Topics and Scope:

I. Introduction

A. History of PHP
B. Limitations of Server-Side Programming
C. Dynamic Web Pages
D. PHP and HTML
E. Web Servers and Server-Side Programming
F. PHP and Databases
G. UNIX/Linux Environment
H. Business Logic

II. Data and Operations

A. Data Types (No Explicit Type Declarations)
B. Variables
C. Constants
D. Operators
E. Expressions
F. Operator Precedence

III. Conditional Statements and Control Structures

IV. Functions

A. Scope
B. Static Variables
C. Arguments
D. Recursion
E. Dynamic Function Calls
F. Exception Handling
V. Arrays and Hashes
A. Single-Dimensional Arrays
B. Indexing Arrays
C. Initializing Arrays
D. Multi-Dimensional Arrays
E. Casting Arrays
F. Hashes

VI. Classes and Objects

A. Defining a Class
B. Constructors
C. Accessing Properties and Methods
D. Static Class Members
E. Access Types
F. Binding

VII. Input/Output and Disk Access

A. HTTP Connections: Requests
B. Writing to the Browser: Responses
C. Request Methods
 1. GET Method
 2. POST Method
D. Passing Arrays in Forms
E. Cookies
F. File Uploads
G. Reading/Writing to Files
H. Sessions

VIII. SQL Databases

A. Introduction to SQL Databases and SQL Syntax
B. Designing and Creating a Database with Tables in SQL
C. SQL Data Types
D. SQL Metadata
E. Inserting Values into a SQL Table
F. Retrieving Data from a SQL Table
G. Deleting Data from a SQL Table

IX. Creating Dynamic Content with Server-Side Script and SQL

A. Connecting to SQL
B. Extracting Data Using server-side script
C. Populating Form Menus Using Data from SQL
D. Putting Returned Records into a Table
E. Authentication with server-side script
 1. Using Sessions
 2. Using HTTP Header Authentication

X. Advanced Topics

A. Web Services
B. Authentication
C. E-Commerce
D. Other Server-Side Languages

Assignments:

  1. Read approximately 25-30 pages a week from course textbook and/or instructor-provided reading materials, accompanied by self-test questions and running code examples
  2. Fourteen (14) programming solution assignments.
  3. Regular participation in online discussion forums.
  4. Define and create a final Web application project that utilizes client- and server-side development to output dynamic content and process client input.
  5. Two (2) skill demonstration quizzes, a midterm and final exam

Class Meetings

Fall 2018 Schedule

Tuesdays 6:00pm – 9:00pm Lecture/Lab Maggini 2923

All class materials for each module will be released online in Canvas on Tuesdays throughout the entire semester.

Instructor Contact

Ethan Wilde

Email: ewilde@santarosa.edu

Phone: 707-527-4855

Fall 2018 Office Hours
August 20 – December 14, 2018

Mondays (Online) 11:00am - 2:00pm Online: Email ewilde@santarosa.edu or Skype ethanwilde
Wednesdays 11:00am - 1:00pm Maggini 2937

You can reserve future appointments for my office hours online by visiting http://srjc.ethan.com/reserve/.

I respond to emails within 48 hours, weekends excepted. I never respond on Sundays.

Course Web Site

Students will use the Canvas course web site for assignment instructions, submitting assignments, viewing classmates' work, sharing resources, and viewing grades. The Google Chrome browser is recommended for viewing the Canvas-powered course site. Internet Explorer is not recommended.

Textbook

PHP & MySQL: The Missing Manual

PHP & MySQL: The Missing Manual (2nd)
Brett McLaughlin
978-1-449-32557-2 (ISBN 13)

Consider buying a used copy. You can locate and order textbooks online via the SRJC Bookstore.

Equipment

  • A personal computer, either at home, work or on the Santa Rosa or Petaluma campuses.

Required Software + Services

  • Internet access
  • Web browser
  • Text editor, for Week 1 only, such as:
  • Cloud hosting + development service
    • Cloud9 IDE (Integrated Development Environment) required for all students, starting Week 2, for hosting class assignments. This service provides a complete set of browser-based tools in place of the optional software listed below. Complete the hosting survey to get your free account.
  • Graphics software such as:
    • Adobe Photoshop, part of a Creative Cloud subscription
    • Gimp open source application
    • Pixlr browser-based image editor
  • Coding education site
    • CodeCombat free account required for all students.
  • PDF display software such as:

Optional Software

The additional software listed below is often used for Web development. Our cloud-based IDE – Cloud9 – will provide a text editor and file transfer support without any additional software needed.

  • Local development environment
    • MAMP installs local copies of Apache, MySQL and PHP on your personal computer.
  • Additional Web browsers including:
    • Mozilla Firefox
    • Apple Safari (Mac OS only)
    • Microsoft Edge (Windows 10 only)
  • File Transfer Protocol (FTP) software such as:

Important Dates

Day Class Begins: Tuesday, August 21, 2018

Day Class Ends: Friday, December 21, 2018

Last Day to Add without instructor's approval: Sunday, August 26, 2018

Last Day to Drop with refund: Sunday, September 2, 2018

Last Day to Add with instructor's approval: Sunday, September 9, 2018

Last Day to Drop without a 'W' symbol: Sunday, September 9, 2018

Last Day to Opt for Pass/No Pass: Sunday, September 30, 2018

Last Day to Drop with a 'W' symbol: Sunday, November 18, 2018

Dropping the Class

If you decide to discontinue this course, it is your responsibility to officially drop it. A student may be dropped from any class when that student's absences exceed ten percent (10%) of the total hours of class time. It is strongly advised that if you need to miss more than one class/homework deadline in a row that you contact the instructor to avoid being dropped from the class.

Attendance

For face-to-face courses, students who fail to attend the first and second class meetings will be dropped by the instructor.

Pass‐NoPass (P/NP)

You may take this class P/NP. You must decide before the deadline, and add the option online with TLC or file the P/NP form with Admissions and Records. With a grade of C or better, you will get P.

You must file for the P/NP option by September 30, 2018. Once you decide to go for P/NP, you cannot change back to a letter grade. If you are taking this course as part of a certificate program, you can probably still take the class P/NP. Check with a counselor to be sure.

Instructor Announcements and Q&A Forum

The instructor will post announcements on the “Instructor Announcements” page in Canvas throughout the semester. Canvas notifies students according to their preferred Notification Preferences.

Late Policy

All assignments are due at 11:59pm PST on the Monday corresponding to the due date. A late submission will receive a 10% penalty for each week it is late. Submissions more than two weeks late are not accepted without prior written arrangement.

Exams

There will be online midterm and final exams. The material comes from the textbook, class lectures and supplemental materials. If any exam is missed, a zero will be recorded as the score, unless you have made prior written arrangements with me. It is your responsibility to take the exams by the due date.

Grading Policy

Click the “Grades” link in Canvas to keep track of your grades. I grade once a week and post grades and comments in the Canvas gradebook.

Grades will be assigned as follows:

A

90% - 100%

900 points or more

B

80% - 89%

800 to 899 points

C

70% - 79%

700 to 799 points

D

60% - 69%

600 to 699 points

F

59% or lower

599 points or less

If taking Pass/No Pass you need at least 70% of the total class points and to complete the midterm exam and the final exam to pass the class.

Grading Breakdown

62%

620 points

Projects + Assignments

12%

120 points

Discussions + Attendance

6%

60 points

Quizzes

10%

100 points

Midterm

10%

100 points

Final Exam

100%

1000 points

1000 points possible

Standards of Conduct

Students who register in SRJC classes are required to abide by the SRJC Student Conduct Standards. Violation of the Standards is basis for referral to the Vice President of Student Services or dismissal from class or from the College. See the Student Code of Conduct page.

Collaborating on or copying of tests or homework in whole or in part will be considered an act of academic dishonesty and result in a grade of 0 for that test or assignment. Students are encouraged to share information and ideas, but not their work. See these links on Plagiarism:
SRJC Writing Center Lessons on avoiding plagiarism
SRJC's statement on Academic Integrity

Special Needs

Every effort is made to conform to accessibility standards for all instructor-created materials. Students should contact their instructor as soon as possible if they find that they cannot access any course materials. Students with disabilities who believe they need accommodations in this class are encouraged to contact Disability Resources by calling (707) 527-4278 or visit online at drd.santarosa.edu.

Student Health Services

Santa Rosa Junior College offers extensive health services to students. Visit Student Health Services online at shs.santarosa.edu or call them at (707) 527-4445.

Course Outline

Start
Date
Canvas
Module
Topics Assignments
8/21 Week 1 Introduction to Server-Side Development Hosting Signup Survey
Assignment 1: Syllabus Quiz
Discussion 1: Check-in Discussion
Doing: Sign up for free CodeCombat account
8/28 Week 2 Programming Basics, Part 1 Assignment 2: First Code
Doing: Begin CodeCombat free levels
9/4 NO CLASS Labor Day
9/11 Week 3 Programming Basics, Part 2 Assignment 3: Level Up!
Discussion 2: History of PHP
Reading: PHP & MySQL, Ch. 1
9/18 Week 4 Getting Started with PHP Assignment 4: A PHP Web Page
Reading: PHP & MySQL, Ch. 2
9/25 Week 5 Web Application Design Assignment 5: Flowcharts + App Design
Discussion 3: Algorithms
Reading: PHP & MySQL, Ch. 3
10/2 Week 6 Getting Started with Databases Assignment 6: Data Structure Design
Quiz 1
Reading: PHP & MySQL, Ch. 4
10/16 Week 7 Working with PHP + MySQL  Assignment 7: Database Driven Site
Discussion 4: Databases
Reading: PHP & MySQL, Ch. 5
10/23 Week 8 Manage Content with PHP Midterm Project: Mini CMS
Reading: PHP & MySQL, Chs. 6 + 7
10/30 Week 9 Midterm Review Midterm Exam
Discussion: Midterm Project Presentations
11/6 Week 10 Error Handling in PHP Assignment 8: Errors
Discussion 5: Designing for Humans
Reading: PHP & MySQL, Ch. 8
11/13 Week 11 Rich Media Files + PHP Assignment 9: Images
Reading: PHP & MySQL, Chs. 9-10
11/20 Week 12 WordPress = PHP + SQL App Assignment 10: Extending WordPress
Discussion 6: PHP-Based CMS
Reading: PHP & MySQL, Ch. 11
11/27 Week 13 Security for Web Apps / 
*Extra Credit: Intro to Node.js
Assignment 11: Secure Pages
Quiz 2
Reading: PHP & MySQL, Ch. 12
12/4 Week 14 Sessions + E-Commerce /
*Extra Credit: Node.js App
Assignment 12: Online Store
Discussion 7: E-Commerce
Reading: PHP & MySQL, Ch. 13
12/4 Week 15 Building a Full Stack App /
*Extra Credit: Node.js App + DB
Assignment 13: Full Stack App
Reading: PHP & MySQL, Ch. 14
12/11 Week 16 Advanced Web App Topics /
*Extra Credit: Node.js App Revised
Assignment 14: Advanced Topic
Discussion 8: Full-Stack Development
Reading: online
12/11 Week 17 Version Control + Final Review /
*Extra Credit: Node.js Full-Stack App
Final Project
Reading: online
Weeks 14-17 are combined this semester due to instructor illness on 10/9 and Monday holiday respected by the Schedule of Classes.
12/17
Mon
Week 18 No Regular Class:
Final Review Only
Final Exam
Discussion: Final Project Presentations

Note to students: the assignments listed above will become available as modules are released in sequence each week. To view course content, go to Modules.

Course Summary:

Date Details Due