UMass Lowell Dept. of Computer Science
91.461 GUI Programming I
Fall 2015 Semester, Section 201
Prof. Jesse M. Heines
Notes for Class No. 1
Course Introduction and Understanding Where We’re Going To Go
Tuesday, September 1, 2015
A video of this class is (or will be) posted at: http://echo360.uml.edu/heines201516/guiprogramming1.html
Handouts and Materials
Openings / Announcements / Reminders
Critical Things To Do Before Our Next Class
(1) Read the Course Syllabus carefully
(2) Complete your registration for this class using the Google form posted at
https://docs.google.com/forms/d/166cx_uRhYJ24qoI-zMrs1dpWVyOw5iloQ-ojjF41lv4/viewform
(3) Join the class discussion forum at https://piazza.com/uml/fall2015/91461/home
(4) Complete the Pre-Course Survey if you have not already done so
(5) Set up your personal system for use in this course by completing Assignment No. 1
Students Without cs.uml.edu Accounts
If you don’t have a cs.uml.edu account, you need to get one TODAY from the lab assistants in Olsen 312
Class Notes
Related reading for this class: Syllabus
Teaching Philosophy and Class Size
“I never teach my pupils; I only attempt to provide the conditions in which they can learn.”
-- Albert Einstein, 1879–1955, Physicist
“The secret of education lies in respecting the pupil.”
-- Ralph Waldo Emerson, 1803–1882, in The Complete Writings of Ralph Waldo Emerson, edited by Edward Emerson (published posthumously in 1904)
“The mind is not a vessel to be filled, but a fire to be kindled.”
-- Plutarch, 46–120
The need to learn how to teach yourself
Administrative Info
- please read the course syllabus carefully
- it contains a great deal of very important information
- I can be flexible with deadlines and such as unforeseen things develop during the semester, but once the semester is over, it’s over
- I only change final grades if I make a computation error
- if you have a problem in the course that is caused by a misunderstanding of something that is covered in the syllabus, that is your problem, not mine
- you must take responsibility for your own education, which includes understanding how the course is run
- also read the article posted here on the use of laptops in lectures
- I do allow you to use laptops and other mobile devices in class for all the positive reasons stated in this article, but you need to understand the effect of doing so on your ability to pay attention in class
- you also need to understand how your use of a laptop in class affects other students, so please read this article fully
- go to the Google form posted at
https://docs.google.com/forms/d/166cx_uRhYJ24qoI-zMrs1dpWVyOw5iloQ-ojjF41lv4/viewform
- answer the questions there to complete your registration in this course
- this form also explains about how we track your visits to the course website and requests your permission for us to use that tracking data in our research
- in addition, the form requires you to certify that you have read and agree to the terms and conditions in the syllabus
- look over the course website home page at
http://jesseheines.com/~heines/91.461/91.461-2015-16f/
- please report any aspects of the course website that you find do not work to Jesse
- the menu bar at the top of each page provides links to:
- join the class discussion forum at https://piazza.com/uml/fall2015/91461/home
- this is the easiest and quickest way to get a question answered, either by me or by others who have volunteered to help or even by fellow students
- Curran Kelleher <curran.kelleher@gmail.com> — last year’s T.A., now a doctoral program alumnus who specializes in JavaScript libraries, graphics, and visualization
- Kaitlyn Carcia <kate.carcia@gmail.com> — a former student who took this course two years ago
- Evan Mulawski <evan_mulawski@uml.edu> — a former student who took this course three years ago
- now working in the UMass Lowell Web Office
- by posting questions there, everyone will see the question and answer
- other students may answer you before I do!
- note that although you must have an account to use this site, you can post questions anonymously
- if you email a technical question to me directly, I will most
likely post it to the forum with our answer
- of course I wont do this if your question is about something
personal
- if you dont want me to post your question to the forum, be sure
to tell me so in your email
- I am extremely pleased to see that as of Wednesday, September 3rd, at 10:00 AM, 24 of you had already signed up on Piazza
- thank you — this bodes well for cooperative learning this semester
- grading: the assignments you hand in will account for the majority of your grade
- attendance is critical
- we do a lot of spontaneous things in class
- I never know exactly how these things are going to turn out!
- class discussions are vital to understanding the concepts and exploring
their implications
- I expect everyone to participate in discussions, regardless of how
shy you may be
- there are no stupid questions, only stupid answers
- “I don’t know” is a perfectly acceptable answer to a question
- attendance will be taken in each class and your attendance percentage will be counted as a regular assignment
grade
- 2 points for coming on time
- 1 point for coming late
- 0 points for unexcused absences
- you are welcome to bring your laptop to class to run programs and try things out and raise questions
- I trust your maturity not to do email or Twitter or surf the web during class
- if your computer is on I expect you to be doing class-related things
- contact me for help via email or phone or by stopping in
- I have given you my home phone number
- if you need help with computer assignments you may call any day, including weekends, until 10:00 PM
- there are only two important rules related to call me at home
- I do not accept calls after 10:00 PM
- I do not provide assistance on homework assignments via telephone on the day before an assignment is due
- if neither my wife (Bonnie) nor I is in when you call, please leave a message
- we can see that someone has called on our Caller ID even when you don’t leave a message
- Bonnie goes a bit crazy trying to figure out who called...
- just state who you are, give me your number, and tell me how late I can call you back
- just FYI, I’m out every Tuesday evening
- if you want my help on a homework assignment, you must start work on that assignment long before it is due
- procrastination is a huge problem among faculty as well as students!
- my office hours are Tuesday and Thursday from 11:00 AM to 12:00 noon and 2:00 to 3:00 PM
- other hours are available by appointment
- note that I also post my public appointment calendar at http://jesseheines.com/calendar
- when emailing me:
- please understand that I easily receive well over 100 email messages a day during the semester
- note that the university uses extensive filters on incoming email to auto-delete
junk mail and pornography
- always put a subject header on your email
- always start that subject header with our course number:
91.461
- always complete the subject header with a few words that tell me what the email is about
- therefore, your email must have a proper subject header or it
may get deleted before I even see it
- please check the email address I have for you
- if you see “not yet supplied” next to your name, I do not have your primary email address
- all grade reports and most important announcements will be sent to the email address you supply
- if the email address on the class roster page is not the one where you want your grade reports sent, just email the one you want me to use
Please Please Please
Please install XAMPP on your own system before our next class so that you are ready to take this course
Use the Class Discussion Forum to report problems and your fellow students and I will try to help you
- I have already begun a note entitled “XAMPP and NetBeans Installation Issues”
- please post questions on this topic as "followup discussions" to that note
- just start to type your question in the space provided click the “post” link
What This Course Is About
This semester we will:
- setting up a website
- coding in HTML5 and its characteristics
- working with browser Document Object Models (DOMs)
- coding Cascading Style Sheets (CSS) in detail, particularly using DOM selectors
- coding in JavaScript and using its specific object-oriented structure
- coding in jQuery
- working with the non-geeks who design web pages and implementing their designs
- professional coding practices
- basic introduction to using JSON and AJAX on the client side
By the end of this course you will be able to:
- Set up, configure, and use a professional IDE, including its debugging capabilities.
- Document code in a professional manner using industrial quality documentation tools.
- Describe the differences between writing small programs and ones that are part of a large software project that involves multiple people.
- Use and create industrial quality application programmer interfaces (APIs).
- Develop programs that implement general algorithms driven by data stored in files rather than hard-coded.
- Appreciate the advantages of industry standards in coding and data file formats.
- Not only recognize a truly elegant computer program when they see one, but also be able to produce such programs themselves.
- List at least three benefits of good user interface design and at least three ramifications of bad user interface design.
- State at least a dozen commonly-accepted guidelines for good user interface design.
- Given a sample program with a relatively sophisticated user interface, identify those aspects of the program that conform to commonly-accepted user interface guidelines and those that do not.
- Write clear and concise messages to inform users of a program’s status and improve messages written by others to make them clearer and more concise.
- Create web pages that exhibit proper use of various user interface components.
- Write code that exemplifies quality programming practices and software engineering.
- Describe how to perform basic usability testing.
- Present work to the class using a computer projector.
Underlying everything we discuss, however, will be human factors
- it’s not sufficient for things to just work, things must work well, and they must work in a way that users can use them
Human Factors
- no program is worth anything if no one can use it
- remember that others don’t have your view of how your app is intended to work
- do things “the normal way” unless you have a good reason to do otherwise
- have others try out your code and address the places where they stumble
- minimize the number of user interactions needed to do a job, but provide options in dialog boxes or on secondary pages
- write good English (or whatever language you use) in complete sentences
- provide excellent error messages:
- state exactly what the problem is
- state precisely where the problem is
- direct users on how to solve the problem
The first steps in practicing human factors are
- to care about this issue
- to train yourself to notice things
To demonstrate point #2, look at the web page at http://tjcallahanspub.com/about-tj-callahans/
Writing Maintainable Code
- good coding style is critical because all professional software development is done in teams
- professional code is elegant, it truly has beauty
- professional code is not a puzzle
- professional code should not require guessing on the part of the maintainer
- avoid esoteric shortcuts (although commonly used shortcuts are OK)
- write more code that is clearer so that it is easier to maintain
- let the compiler optimizer make your code more efficient
- efficiency isn’t a big deal anyway in user interface code
- documentation is critical because you can never remember what you did or why you did it
- programs over 100 lines are complex
- documentation is for yourself as well as for others
- document where you found things
- document what didn’t work as well as how you figured out what did
- you may have to come back and revise your code 5 years from now
Using Your weblab.cs.uml.edu Account
- your
cs.uml.edu
file system is automatically shared with weblab.cs.uml.edu
To set up your account to display web pages,
- create directory
public_html
as a direct child of your home directory
- create directory
WEB-INF
as a direct child of public_html
- create directories
classes
and lib
as direct children of WEB-INF
- create an
index.html
file in your public_html
directory
- try to access that file using the URL
http://weblab.cs.uml.edu/~yourusername
- note that
public_html
does not appear in the URL
index.html
doesn’t have to be specified either, because that is the default
- if don’t specify a file name and
index.html
(or index.htm
or index.jsp
) isn’t there, you will either get an HTTP 404 “page not found” error or a directory listing, depending upon how your website is configured