CS 341
User Interfaces

This course teaches the principles of constructing user interfaces. In this course you will learn how to actually implement user interfaces.

This course is programming intensive. The prerequisite is CS211 and CS221 is recommended.


    Elodie Fourquet
Office     Clapp 226
Phone 538-2241
Email efourque   mtholyoke.edu
Office Hours
Mon. 12:30 - 1:30
Wed. 2:30 - 3:30
Thu. 4:00 - 4:50
or by appointment

Meeting times

Lectures Mon. & Wed. 11:00 - 12:15 Kendale 303
Fourth hour Fri. 11:00 - 11:50 Clapp 202


Course Webpage http://www.mtholyoke.edu/~efourque/cs341
Moodle https://moodle.mtholyoke.edu/

Course Objectives

This course provides an introduction to contemporary user interfaces, including the basics of human-computer interaction, the user interface design/evaluation process, and the architectures within which user interfaces are developed. Students implement and evaluate portions of typical user interfaces in a series of programming assignments.

In this course students will learn the principles of constructing user interfaces, based on issues of design and usability and based on the mathematics of 2D graphics.


There is no required textbook.

Course notes will be posted on Moodle

There are X Window System manuals in Kendale 307.

Books on reserve in MHC library

Course Content


Final course grades will be calculated using the following percentages.

40 %
Final Project
15 %
25 %
15 %
5 %
There are three assignments For the final project you will work with a partner of your choice on the implementation of an interface that you propose. You may choose to work on mobile development, an interactive installation if you desire. Each group will submit a proposal that describes the project and lists a set of objectives to be accomplished.


Assignment submission

Assignments must be handed in on the day they are due. You will lose 10% of the assignment's value for each day that it is late. The first late day is the 24 hours starting when the assignment is due, the second day the next 24 hours, and so on.

In addition you will usually give a short demonstration of your programming assignment during the fourth hour. You should rehearse the demonstration as the presentation will influence your grade. You will receive immediate feedback on your work. Your assignment work will receive a 10% penalty if you do not present it before the end of the specified fourth hour.

Your work on the first part of an assignment must be the work of the individual student unless otherwise noted. After the initial milestone groups (student pairs) are specified by the instructor so as to complete the work. You are then expected to closely collaborate with your teammate, especially practice pair-programming.


Your participation grade will be based on participation in class, in the lab and on Moodle. By doing the course notes readings you are expected to be able to participate in lecture discussions by volunteering answers and asking questions. By doing the class activities you are expected to contribute with comments, questions and/or solutions.

We are going to be using Moodle's forum for our class discussions outside of class. Rather than emailing questions to me, you are encouraged to post the questions on Moodle's forum. On Moodle, you should feel free to ask questions and to respond to your classmates questions (and to share links to documentation and tutorials when appropriate). Replying and giving hints on Moodle's forum to a student who asked for help is useful to the rest of the class. I encourage collaboration through Moodle and doing so will positively affect your participation grade.

Announcements related to issues that arise between class meetings will be made on the News forum on Moodle. In particular, clarifications of programming assignments, changes to due dates, etc. will be posted on Moodle. You are responsible for checking Moodle and the course website on a regular basis.


Submission of work that is not your own is considered a violation of the Honor Code. The penalty for such a violation is a zero on the assignment. In accordance with the student handbook, all such violations will be reported to the Dean of Students.

Using the Web and Other References

The Web is a marvelous source of information. However, it is not supposed to do your homework for you. First, many online posters don't know what they're talking about, so be careful what you use. Second, in hunting for an example of how to do something, you may on some occasions find a complete or close to complete solution of an assigned problem. Copying code and handing it in is plagiarism.

Assignments are your individual or team work, while you are allowed to use code examples provided in class or in the course notes

If you use more than a single line of code that you did not write on your own, attribute it to the source: all of the resources you used to help you with an assignment must be cited. The best practice is to specify all the help you received in your readme: who or which resource (specific pages) helped you and for which part of the problem.

Failing to appropriately cite all the resources used to complete an assignment is a violation of the Honor Code.

The library provides an online tutorial on the proper use of sources as well. If you have any doubt, please ask.


Everything on this syllabus is subject to change. Changes will be announced in class and updated in this online syllabus.