- Course: INFSCI2560-1080 (24286), University of Pittsburgh
- Instructor: Brian J Kolowitz, kolowitz@pitt.edu
- Office Hours: By Appointment
- GSA: Chun-Hua Tsai, CHT77@pitt.edu
- Office Hours: Tuesday 11 am 1 pm
- Need help?
This course is about the various technologies that we use to build Web applications. It is focused on preparing you for enterprise applications and thus focuses more on Java based back ends. It also introduces you to the vagaries of information technology standards. Standards are quantifiable metrics to which parties adhere for purposes of allowing some common ground for interchange. Some students of standards view monetary systems developed for the exchange of goods as the earliest standards. The alphabet may also be viewed as an early standard - a compatibility standard for the exchange of information. Modern U.S. standards first appear in the manufacturing arena. The history is somewhat cloudy and many stories are told, but in most of them, mass production and the railroads play a role, e.g. the railroads required standardization on many fronts, from track gauge to time. The World Wide Web is made possible by the adoption of standards that allow many independent systems to work together.
This course is primarily an introduction to web technologies and standards, but it also treats standards more generally. The course will client and server side technologies for the web. This will include HTML, xhtml, JavaScript, CSS, servlets, JSP, J2EE, etc. We will explore HTML 5 and the responsive design technologies. As time permits, we will introduce both older/more fundamental technologies such as PERL and regular expressions more advanced web technologies such as J2EE, AJAX and Android.
We will take an in depth look at the XML technologies. The XML standards will be reviewed. Particular attention will be paid to XML data types, XML Schema, XSLT, XPATH and XQuery. Derivative standards such as the Resource Description Framework and the RDF Schema language RSS and SVG, etc. will be introduced. The course will provide students with the opportunity to explore these standards in the course of real application development.
Applications standards pertinent to the web – SMTP and HTTP – will be dissected. The course will touch on distributed object standards such as CORBA, and DCOM that have led to the development of infrastructure standards for distributed services such as IDLs (including WSDL), directory service standards such as LDAP and UDDI and security standards such as DES and PKI. As time permits, we may take a look at some of the network protocols which include addressing standards (IP), transport standards (TCP), and some supporting standards such as ARP, Ethernet, and DNS.
Within the realm of information technology standards, we still look primarily at the higher level software and information formatting standards. While hardware standards are important they are generally addressed in other courses in the curriculum. Less well addressed, but of increasing prominence, are the software and information formatting standards. They will be the focus of our attention here.
IS 2560 is a graduate course. This means students have responsibility to be proactive in their learning. The instructor's role is less directive and more one of stimulating and guiding learning. If you think back to the things you remember from other courses you have taken, you will probably find that the things you remember best are the things you had to work hard to learn. What takes place in the classroom constitutes only a small part of the overall learning in any course. To this end, the course is constructed to provide three kinds of learning experiences. First, class lectures and discussions that help to clarify the concepts and principles in operation. Second, readings that both provide an overview and some in depth discussion of the topic. Third, practical experiences related to the subject matter at hand.
The most important learning will come from the efforts you undertake beyond the textbook and class lectures. The lectures will provide a counterpoint to what is in the book and the assignments will require the use of skills learned in this course along with the many other skills you have developed throughout your program. The lectures for the course will cover a broad range of topics in an effort to provide both orientation and understanding about basic concepts. Finally, the assignments will provide an opportunity to see, in relatively simple situations, how the concepts discussed in the lectures and readings are implemented in practice.
The goals of the course are:
- To understand the base technologies that are being used in modern development and deployment of information and applications to the World Wide Web.
- To analyze functional needs for web systems and design web components and full stack systems to meet these needs in a reliable way.
- To develop a standards compliant website.
- To develop major components of a website such as forms, web services, persistent stores, etc.
- To understand and follow trends in the development of web technologies and standards including continous integration and deployment.
- To define the basic characteristics of standards, define the processes by which standards are developed, and to experience the process of designing/programming information systems in accord with some standard.
The recommended textbooks for this course are:
- Beginning XML, 4th Edition (Programmer to Programmer) (Paperback) David Hunter, Jeff Rafter, Joe Fawcett, Eric van der Vlist, Danny Ayers, Jon Duckett, Andrew Watt, and Linda McKinnon. Publisher: Wrox; 4 edition (May 21, 2007), Paperback: 1080 pages. ISBN-10: 0470114878, ISBN-13: 978-0470114872
- Scaffolding the New Web: Standards and Standards Policy for the Digital Economy by Martin C. Libicki, et al (Paperback - June 2000), RAND Corporation (June, 2000). ISBN: 0833028588 (http://www.rand.org/pubs/monograph_reports/MR1215/index.html)
Students may also wish to read:
- Global Standards: Building Blocks for the Future, Linda Garcia, Office of Technology Assessment (Copies will be provided by the instructor)
- Charles F. Goldfarb's XML Handbook, Fifth Edition Charles F. Goldfarb, Paul Prescod Prentice Hall PTR; 5 edition (November 3, 2003), ISBN: 0130497657
- "Information Technology Standards." In M.E. Williams (ed.) Annual Review of Information Science and Technology. Volume 26.
- Standards Policy for Information Infrastructure, Brian Kahnin and Janet Abbate (Eds.) MIT Press, Cambridge Mass, 1996.
This course is addresses a subject which has not traditionally been a part of the information science curriculum. The topics are interdisciplinary, broad, deep, and complex. From the academic perspective there is not any comprehensive perspective or model from which the subject may be suitably studied. For these reasons, students should anticipate that the sequence of topics may be adjusted, expanded, or contracted as the term proceeds.
In general, the course will be divided into four parts.
- In part one, we will look at all the base technologies and the fundamental structure of the web. We will explore both client side coding in HTML, CSS, and JavaScript.
- In part two, we will look at developing backend systems utilizing Java. Here we'll leverage cloud technologies for deployment and hosting. We'll also look at the XML family of standards in depth.
- In part three, we will explore web mobility and how mobile applications can leverage web technologies.
- In part four, we will look dig a bit deeper into the web exploring notifications, analytics, and other backend options.
Course Schedule is subject to change.
- Part 1. HTML, CSS and JavaScript
- Week 1. Intro – Getting Started
- Managing your code with GitHub
- Continuous Deployment with Travis-CI
- Full Stack Web Development with Spring
- Cloud Deployment with Heroku
- Week 2. Web Basics
- Week 3. Technology Session - Git, GitHub, Maven, Travis-CI, and Heroku
- Week 4. Java Fundamentals & Object Oriented Programming
- Week 5. Building a Backend – Web Services & JSON
- Week 6. Enhanced Backend – XML & Schemas
- Week 7. Storing the Data – Database Integration JDBC, JPA, SQL, and NoSQL
- Week 8. Technology Session - Backend Technologies & Unit Testing
- Week 9. Server Template Rendering
- Week 10. Styling the Web with CSS and theming with Bootstrap
- Week 11. Interactive Web with JavaScript and frameworks (e.g. AngularJS)
- Week 12. AJAX and Client Template Rendering
- Week 13. Technology Session - Frontend Technologies & Unit Testing
- Week 14. Other Back ends (e.g. NodeJS)
- Week 15. Mobile Clients (Android Development Studio)
- Week 16. Course Wrap-up
- Week 1. Intro – Getting Started
Late assignments will be subject to a 10% penalty per day late. Assignments submitted 7 day's after the due date will not be accepted.
The course assignments are broken down into 2 major projects with multiple assignments per project.
You are required to create a web application to satisfy the requirements to complete this class. This is an open-ended project that complements the lecture and in-class activities. This project will give you the necessary experience to hone your Web programming skills in a practical and personal manner. At a minimum, you must create a Create-Read-Update-Delete (CRUD) Full Stack Web Application that utilizes Web 2.0-style Ajax interactions. Static personal websites or even dynamic read-only sites such as weather-lookup applications do not meet the requirements. There is no way for a user to both create an account and update persisted data. More specifically, the application must:
- Allow users to create accounts and persist data
- Allow users to update existing data
- Allow users to delete data and accounts
- Do all of the above utilizing Ajax (and/or WebSockets) where appropriate.
- The app must work when viewed in a modern web browser.
- The client-side code must be HTML5 compliant (HTML, JavaScript, CSS) e.g. no Flash, Siverlight, Java Applets, etc.
- The server-side code must be Java and utilize the Heroku java-getting-started codebase as a starting point.
- All project code must be publicly hosted on your full-stack-web-project GitHub repository and successfully build through the instructor’s integration with Travis-CI.
- All HTML files should pass W3C Markup Validation.
- All written JS should pass JSHint.
- Must apply "good programming style" learned in class* Functions should be "short" (see Sandi Metz's rules for developers).
- Optimize for readability. "Programs must be written for people to read, and only incidentally for machines to execute." -Harold Abelson
- Use Object-Oriented Programming.
- Any borrowed code must be properly annotated.
- The application must be hosted on Heroku.
- You must be able to demonstrate the project in person (or virtually) if called upon for grading or to answer project specific questions.
- You must ensure that your project satisfies all of the individual items in the Courseweb rubric which will be used for grading.
- Assignment 1.1 Getting Started (50 points)
- Successfully clone, build, and deploy the getting started project.
- Modification of the Travis-CI badge to reflect your build.
- Assignment 1.2 Project Proposal (50 points)
- First pass at the README.md file including project description and key features.
- Assignment 1.3 API tier (50 points)
- RESTful API written in Java
- Assignment 1.4 Data tier (50 points)
- Integration of RESTful API with database
- Assignment 1.5 Presentation tier (50 points)
- Integration of RESTful API with website
- Assignment 1.6 Project (100 points)
- Fully developed project meeting all requirements
- Assignment 1.7 Project Presentation (50 points)
- Complete GitHub README.md
Carve out one area of current W3C or other web related standardization activity and develop an assessment of the state of the standardization effort. Select an area of W3C or other web related standardization activity. The focus of the paper should be on the way in which the standard is created, updated, and maintained and not about the technology itself. Your report should address:
- Description: What is being standardized?
- Assessment: What are the related standards and how is this different?
- Description: What is the goal of the standard and why is it necessary?
- Assessment: Does this standard achieve the goal and solve the need?
- Description: How is the standard being standardized?
- Assessment: Does the standardization mechanism limit its effectiveness or adoption?
- Description: Who are the prime movers and/or contributors to the standard?
- Assessment: What specific consequences (good or bad) result from the prime mover contributors.
- Description: What impact does the standard have on the intended target audience?
- Assessment: What is your view of the importance and implications of the standard?
- Assignment 2.1 Standards Assessment Proposal (10 points)
- Assignment 2.2 Standards Assessment Bibliography (10 points)
- Assignment 2.3 Standards Assessment Outline (10 points)
- Assignment 2.4 Standards Assessment Paper (70 points)
Your final report should include a 10-15 page paper (double spaced excluding title page and bibliography)
All assignments will be graded accorded to the associated rubric listed in the courseweb. All assignments will be submitted as instructed in the corresponding courseweb item.
Grades for all the assignments will be summed and assigned as follows:
Grade | Points |
---|---|
A | 100-90 |
B | 89-80 |
C | 79-70 |
F | 69-0 |
You are expected to be fully aware of your responsibility to maintain a high quality of integrity in all of your work. All work must be your own, unless collaboration is specifically and explicitly permitted. Any unauthorized collaboration or copying will at minimum result in no credit for the affected assignment and may be subject to further action under the University Guidelines for Academic Integrity. You are expected to have read and understood these Guidelines. A document discussing these guidelines was included in your orientation materials.
If you have a disability that requires special testing accommodations or other classroom modifications, please, notify both the instructor and Disability Resources and Services by the second week of the term. You may be asked to provide documentation of your disability to determine the appropriateness of accommodations. To notify Disability Resources and Services, call 64807890 (voice or TDD) to schedule and appointment. The office is located in the William Pitt Union, Room 216.
There are a couple things that you need to keep in mind as you start this course. Any documents you submit should be carefully proofread and formatted professionally. The paper should provide all the necessary information – your name, your email address, student ID, the course, the term, the CRN, and the assignment for which the paper is submitted. Any code that is submitted should be thoroughly tested to insure that I will be able to run it on any machine. The project source code and executable files should both be included. A readme.md file should be included that explains any particular constraints or steps that need to be taken. ALL CODE THAT COMES FROM ANY SOURCE OTHER THAN YOUR HEAD NEEDS TO BE FULLY AND CAREFULLY MARKED. This includes code which you have adapted from some source but which is essentially someone else’s work. Failure to note such use is cause for a grade of 0 on the assignment and an F in the course. All of your code should be carefully and professionally commented and explained. In both the mail note to which the project is attached and in the main file of the project, you should include:
- The names of all participants
- Email addresses and student IDs
- The course, the term, the CRN
- The assignment for which the paper is submitted.
- Codecademy – JavaScript and jQuery
- Eloquent JavaScript by Marijn Haverbeke, Chapters 1-5
- Want to learn JavaScript in 2015?
- see also – Other Lists
- Google JavaScript Style Guide
- JavaScript Garden
- Mozilla's Introduction to Object-Oriented Javascript
- What’s so great about JavaScript Promises?
- Functional JavaScript by Michael Fogus
- Front-end Job Interview Questions by @darcyclarke (for testing yourself)
- JavaScript Best Practices
- JavaScript Patterns by @shichuan (thanks @iandrewfuchs)
- JavaScript Patterns by Stoyan Stephanov
- JavaScript Web Applications by Alex MacCaw
- JavaScript: The Good Parts by Douglas Crockford
- Learning Advanced JavaScript slides by John Resig
- Static Web Apps
- Test-Driven JavaScript Development by Christian Johansen
- The JavaScript Interpreter, Interpreted by Martha Girdler (video)
- Classical Inheritance in JavaScript by Douglas Crockford
- Partial Application in JavaScript by Ben Alman (thanks @michaelBenin)
- HTML5 Rocks slides
- Learning JavaScript Design Patterns by Addy Osmani
- JS: The Right Way (an overview of the JS landscape)
- Code School
- Thoughtbot's Javascript Trail Map
- How To Learn JavaScript Properly
- Superhero.js
- Teach Yourself to Code
- code validation: JSLint / JSHint
- debugging:
- sharing code snippets: gist.github.com
- asking questions: Stack Overflow
- Git and GitHub
- GitHub Pages
- Mozilla Developer Network and Learn JavaScript
- w3schools
- JavaScript: The Definitive Guide by David Flanagan