CS 1520

Programming Languages
for Web Applications

SPRING 2017

INSTRUCTOR


SECTIONS

  • Coming Soon!

RECITATION

  • Coming Soon!

TEXTBOOK

  • PROGRAMMING THE WORLD WIDE WEB
  • Eighth Edition
  • Robert W. Sebesta

Course Info, Policies and Dates

Course Information

Prerequisite:

cs/coe 0445

Text:

Programming the World Wide Web, Eighth Edition by Robert Sebesta, Pearson Education. Many language references will also be needed - these can be obtained from online sites

Language/Environment:

Try to have a good code editor prior to working on your first assignment.

Basic knowledge of the command line (especially for git). We will go over most of the commands you will need, but it never hurts to look into it on your own.

We will be using PHP, MySQL, JavaScript, HTML (with DOM), CSS, XML (with DOM) and possibly other systems as well. Software may be available in University or Departmental labs, or it may required as downloads from the Web. We will also explore other topics, such as code management and other relevant technologies as time permits.

Grading Requirements:

  • All coding submissions MUST adhere to the coding style guide that can be found here.
  • All submissions MUST be turned in through GitHub. Emailed files will not be considered.
  • Any code submitted for class MUST run in some capacity. If I run the code and I am hit with a screen full of errors, it will not be accepted. Of course, there will be special cases regarding this, which we will discuss when the time comes.
  • All necessary files MUST be included with your submission.
  • To earn full credit, assignments MUST be handed in on time. See the Course Policies section below.
  • Yes, there will be extra credit!! Lucky you! Any extra credit will be mentioned along with the assignment, or shortly after. Note: you cannot get higher than 100% through extra credit.
  • If you have any questions about the grading requirements, please don't hesitate to ask. We can work out accommodations if necessary.

Course Policies

General

  • Unless otherwise stated, each student is expected to do his/her own work. A student caught collaborating/cheating in any way will fail the class immediately and will also immediately be reported to the Department of Academic Integrity and may be subject to stronger actions. Note: Submissions that are alike in a substantive way (not due to coincidence) will be considered to be cheating by ALL involved parties. Please protect yourselves by only storing your files in private directories or repositories, and by retrieving any printouts promptly. For more information on the Academic Integrity Policies of the School of Arts and Sciences, see this link
  • Late Work: Believe it or not, all of your work must be submitted on time. This usually means at or before 11:59PM on the day it's due. The system works like this: 1 class late - 25% off. 2 classes late - 50% off. 3 classes late - you can just keep it, no credit will be given.
  • You are required to attend class. I don't always take attendance, but it is highly likely that I will notice if you aren't there. I know life happens sometimes, so if you have to miss class, please email me to let me know in advance as soon as possible. You will be responsible for getting any in class notes. If you miss a lecture, you are still responsible for the material covered and it is advised to copy the notes from a classmate. If that isn't possible for some reason, see me and we can arrange something.
  • An abundance of information, including announcements, handouts, review sheets and solutions will be posted on the class site (and possibly TA pages as well) throughout the term. You are expected to be aware of all information that is posted on our web pages, and should access them frequently in order to stay current.
  • Students with Disabilities: If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact both your myself and Disability Resources and Services, 216 William Pitt Union, 412-648-7890 or 412-383-7355 (TTY) as early as possible in the term. DRS will verify your disability and determine reasonable accommodations for this course. More info here

Quizzes

  • Quizzes will be given in class. You will have the entire class period to complete it. The quizzes will generally include material covered in the previous class(es) and recitation(s). Time permitting, we will have a review session prior to the quiz.
  • There will be a total of 2 quizzes throughout the term. These will not be written quizzes and you will be given a link to the repo in order to fork it and submit when completed.
  • Quizzes can only be made up if you contact me in advance. If you miss a quiz without informing me, you will receive a zero and will be unable to make it up.
  • You can find the tentative dates for the quizzes in the syllabus section.

Exams

  • There will be a total of 2 exams throughout the term. These will be your midterm and final exams.
  • Exams will also be given in class. Students are expected to be present for both exams. If you miss an exam without informing me, you will receive a zero and will be unable to make it up.
  • Exams will be a combination of written and coding, in some capacity.
  • You can find the tentative dates for the exams in the syllabus section.

Assignments

  • NOTE: Please do not copy and paste source code from the example files that are found on this site. All code written for in-class exercises should be written by you. Example files should only be used as a reference.
  • There will be 6 total assignments throughout the term. They are typically due the week after they are assigned.
  • These won't be large scale projects, but you are encouraged to be as fancy as you like, so long as you fulfill the basic requirements.
  • Depending on the subject matter of the assignment, class time may be given to work on it.

Project

  • In addition to the tests and quizzes, we will have a large-scale project that will span the course of the semester.
  • This will be split out into 2 sections. The first section will incorporate concepts we have gone over up until about the halfway point of class. You'll never guess what the second section is about...
  • You are free to leverage front-end frameworks for visual appearance and some functionality. Bootstrap and Foundation are two of the most popular and actively supported platforms.
  • This will be a "flat" site. This means that we will not implement any server side frameworks or MVC structures.
  • We will discuss the details in class, and they will also be posted on this site as well.

Instructor Info

Matt Bowytz

"Call me Matt"

Office Hours

  • 6148 (Next to the display with all the old computers in it)
  • Mondays and Wednesdays 4:00pm - 6:00pm
  • (My classes start at 6:00pm)
  • By appointment when necessary

TA Info

Zhenjiang Fan

Office Hours

Contact TA for office hours

Announcements

Check back often!

Class Announcements and Info

  • 4.8.17
  • Sign Up Sheets for presentations
  • Sign Up!
  • 1.23.17
  • New office hours have been added...check the instructor section for more deets!
  • Updated TA information has been added to the TA Info section as well!

Weekly Syllabus

Class Activities and Goals

Points Breakdown

Assignments

Typically due the week after they are assigned, unless otherwise noted.

Programming Project Part 2

Class Project: PHP Website (But for real this time)

Project Plan Part 2

  • Very similar to part one, this must be a GitHub gist that is professionally written. It must include your name, CS1520, and email address.
  • Make use of GitHub markdown, I will not accept a run-on plain text file (look into GitHub Markdown if you need a hand)
  • Your plan should include the following:
  • What are you going to improve on from part one?
  • Are you going to improve your project from part one? Or are you going to do something completely different?
  • Using a frontend framework? Which one?
  • Also, anything else you think may be important to have added to the plan. We just want to cover all our bases.
  • A list of ANY questions you may have about your idea or the project in general. This is the best time to hammer out any of the smaller details.
  • If you were thinking about using some advanced topics, like MVC or anything like that, let me know as this would be the time to do it.

Requirements

  • Organized file tree
  • Document stating what you changed/fixed/implemented vs. Part 1 and what you've learned since then. Be thorough and provide details. Should be about a page long.
  • There must be some Database interactivity
  • Better use of JS, perhaps using an API? (We'll be going over some of them, but don't hesitate to research on your own)
  • Programming Requirements:
  • The entire site must be in PHP this time.
  • Use of variables, includes, arrays, functions, file reading etc.
  • When should I use [requirement]?
  • Ex. If you have a collection of links that have text and hrefs that need to be displayed, store them in an array and correctly loop through them where you want them to display
  • Ex. Repeating some PHP more than once in a PHP block? Store it in a variable.
  • Use PHP partials to keep the code clean and organized, no need to repeat yourself.
  • There are no hard requirements for what PHP to use and when. The best approach would be to use as many of the topics covered in class (appropriately) as necessary to make the site work and prove your ability
  • If you are unsure on what to use or when/how to use it, please reach out to me or a TA
  • PLEASE DO NOT HESITATE TO ASK IF YOU NEED CLARIFICATION OR HELP WITH ANYTHING. I CANNOT STRESS THIS ENOUGH
  • Grading Rubric will be the same as for part one.

Programming Project Part 1

Class Project: PHP Website

Project Plan

  • Basically, this will act as a roadmap for both you and me, so we can have a clear outline of what our projects will entail. Nobody wants to program themseleves into a corner and wind up having to scrap hours of work if they can help it. You can be as verbose as you like in this, but I would like to see at least a couple sentences on each point.
  • Your plan should include the following:
  • What technology are you going to be using? (PHP for the most part, but it never hurts to outline everything you are going to use.)
  • What is your site going to be about? Self promotion? Promotion of something else? Etc. The worst that can happen is that I will suggest another route.
  • Using a frontend framework? Which one?
  • Also, anything else you think may be important to have added to the plan. We just want to cover all our bases.
  • A list of ANY questions you may have about your idea or the project in general. This is the best time to hammer out any of the smaller details.
  • OPTIONAL: Do you want to use some advanced topics? Such as MVC structure, or using PHP as a backend for some other frontend framework, etc. This will not entitle you to different or better grading. You will still be accountable for all the same requirements. I am well enough equipped to review, grade and comment on most implementations.
  • Create a GitHub Gist and email me the link to it. If you would like further direction on anything, let me know. Let's have fun and demonstrate what we've learned so far!
  • NOTE: Since the class project is split up into two milestones (part one due halfway through, part two due at the end), this is really only in relation to the first part of this project. All the requirements will be the same for part two, but just implementing features based on what we will learn during the second half of the class.

Requirements

  • Organized file tree
  • One page or multi page layout. Minimum of three sections/pages
  • Page Examples:
  • About, contact, resume/CV, fan page about your favorite rapper or super hero, anything is fine. Just remember though, you may want to keep it professional in the event you want to use this as your actual personal site down the road.
  • You may use a frontend framework, such as Bootstrap or Foundation. You may also use a template, all I ask is that you do not use it as it comes. Add your own layer of style on top of what is included.
  • All pages (views and includes, etc) should be written in PHP, at least for this first part of the project
  • One component/page of your site should be a contact form, I would prefer this to submit to a database, but if you want to defer the database and have it email you or write to a text file, that is ok too.
  • Programming Requirements:
  • Intelligent use of topics covered in class so far. Such as:
  • Use of variables, includes, arrays, functions, file reading etc.
  • When should I use [requirement]?
  • Ex. If you have a collection of links that have text and hrefs that need to be displayed, store them in an array and correctly loop through them where you want them to display
  • Ex. Repeating some PHP more than once in a PHP block? Store it in a variable.
  • Ex. Don't want to write your header and footer on each page for a multi page approach? Use an include file. Similarly, if you have a function that you will use over and over, that should also go into an include file.
  • There are no hard requirements for what PHP to use and when. The best approach would be to use as many of the topics covered in class (appropriately) as necessary to make the site work and prove your ability
  • If you are unsure on what to use or when/how to use it, please reach out to me or a TA
  • PLEASE DO NOT HESITATE TO ASK IF YOU NEED CLARIFICATION OR HELP WITH ANYTHING. I CANNOT STRESS THIS ENOUGH

Submission Guidelines

  • Submissions must be through GitHub
  • Remember to make a copy of the project folder containing the file tree. You will need an unaltered version of this to hand in alongside your part two.

Grading Rubric

  • I'm going to be more attentive to the way you write your code for this project. In the event that it will become public facing in the future, it is important for you to have well written, clean semantic code. Myself or the TAs will be available to help you with this as well.
  • Clean, readable, sematic code, organized assets and folders, etc.: 15%
  • Intelligent implementation of requirements: 45%
  • Usability (navigation works, the site loads, assests aren't broken or unavilable, it's not too confusing to use, looks ok etc.): 25%
  • Submission guidelines are adhered to: 15%