CS 338: Graphical User Interfaces
Course Syllabus
Professor: | Erin Solovey |
Email: | erin dot solovey @ drexel.edu |
Office: | University Crossings 108 |
Office Hours: | Please email me for an appointment! |
TA: | Reza Moradinezhad |
Email: | rm976 @ drexel.edu |
Office: | Cyber Learning Center (University Crossings 152) |
Office Hours: | Tuesdays 2-4pm (or by appointment) |
Description
A vast number of today's computer applications have user interfaces through which users enter information, analyze data, play games, etc. In this course we will explore how to implement common user interfaces that we all use in everyday life. The majority of the course looks in detail at the specific components of a user interface and the integration of these components into a usable system. The course also discusses design and evaluation issues that arise during implementation in order to understand the context in which interfaces are developed.
Goals and Objectives
This course aims for students to (1) implement basic user interfaces using a high-level programming language and interface toolkit; (2) understand and apply concepts of interface layout and event handling; (3) understand and apply concepts of various interface components such as buttons, lists, and windows; and (4) understand and appreciate the larger context in which interfaces are designed, implemented, and ultimately used.
Prerequisites
The official prerequisite for this course is CS 350 (Software Design) or SE 310 (Software Architecture). The course will assume that students are completely comfortable with the Java programming language and a Java development environment (e.g., Eclipse).
Lectures
Lectures are intended to be interactive, and class participation is highly encouraged -- please ask questions early and often! Topics covered in class will include the following:
- introduction to interface implementation in the context of design and evaluation
- introduction to Java Swing (a package for building portable interfaces)
- introduction to web UIs (HTML, CSS, Javascript)
- interface input and output
- event-driven programming
- layout and look-and-feel
- lower-level components: buttons, lists, etc.
- higher-level components: windows, dialogs, etc.
- interfaces on the web and in the world
- callback functions
- user interface prototyping
Readings
There is no required textbook for this course; the lecture notes handed out in class will serve as the primary study resource, and we may hand out additional sources during the term. Optionally, you may also find it helpful to purchase a Java and/or Java Swing and/or Javascript reference book. Feel free to choose whatever suits you best; there are many books to choose from (try searching on amazon.com). However, before you purchase additional books, please note that the Web contains many online resources that may serve just as well, such as Oracle's online Java Tutorial and Swing Tutorial and Mozilla's Javascript Tutorials.
Assignments
Homework assignments will focus on programming to solidify and expand on topics presented in lectures. The assignments involve implementation of a user interface in the Java programming language and the standard Swing package and/or web technologies (HTML/CSS/Javascript); lectures will introduce whatever knowledge of is needed of these languages to complete the assignments.
Project
The course will include a multi-week individual project that brings together all aspects of the learned material. The initial waypoint will include group discussion of interface prototypes to get feedback for future work. The final week will include demonstration sessions in which everyone presents their projects and results to the class.Exams
We will have two exams during the term. The exams will test knowledge and skills developed in lectures, readings, and assignments. The exams will stress deep understanding of the concepts involved rather than more superficial aspects of programming.
Grading
All aspects of this course are important for developing an understanding of and appreciation for building user interfaces. The grading breakdown will be as follows:
- Assignments: 30%
- Exams: 30% (2 exams, 15% each)
- Project: 35% (2 graded stages)
- Quizzes: 5% (at the instructor's discretion; if there are no quizzes, the other components will be scaled accordingly)
Assignments turned in up to one day late incur a 50% penalty; assignments turned in more than one day late cannot be accepted and receive a score of 0. Missed exams also receive a score of 0.
Communication
The instructor will disseminate important announcements by email through the course mailing list, and also post these announcements on the course web site. Also, the web site contains a timeline with links to all information (lecture slides, assignments, etc.) relevant to the course.
Policies
- Attendance for lectures and exams is expected. In the case of a school closing
on an exam day, the exam will be given in the next class period. Snow closings are posted on the Drexel home page.
- Academic honesty is essential. Cheating, academic misconduct, plagiarism, and fabrication of any submitted material, including both code and prose, are serious breaches of academic integrity and will be dealt with accordingly. Violations will result minimally in a grade of zero for the exam/assignment in question, and a report of the violation to Drexel administration; further penalties may also apply at the discretion of the instructor, department, and university. Please refer to the Department of Computer Science Academic Integrity Policy and the Drexel University Academic Integrity Policy for more information.