General Info

CPSC 235: Advanced Introduction to Computer Science - Assignments

The assignments for the course are centered around building a dynamic web site that aims at teaching a user (student) a particular concept of the Python programming language (the requirements for this web site are described here). In addition to identifying the user, this web site has to explain the concept using appropriate examples and it has to test the understanding of the concept by the user by having him/her answer questions, including solving a little larger programming task.

More precisely, there are four assignments:

Before we look at these four assignments in detail, here are first some general remarks about how assignments need to be done.

All documents produced need to be emailed to the instructor as a pdf-document (I will not accept Word documents!). If you produce your pdf-documents out of Word, make sure to include all fonts!

While we are naturally not in an English course, bad English in form of typos or wrong grammar will have a negative influence on the grades for the documents. This is also true for bad or wrong terminology!

The requirements for the web site are quite different regarding their precision. Everything that is explicitly required needs to be in the final web site (the "product") and any missing requirements will have quite an influence on the grade a student gets.

In the week before each deadline, there will be a mandatory meeting of each student with the instructor. In this meeting, the plans of the student for the deliverable(s) on the deadline will be discussed to make sure that the student has the right ideas. Possible meeting time slots will be announced in the News section of the main course web page before the week of the meetings and time slots will be assigned on a first-come-first-serve basis. Earlier meetings are also possible, if a student feels (s)he is already prepared enough for the meeting for a particular assignment.

A document describing how you want to construct your web site

For every software system (and many other systems and structures) it is important to first come up with a design of the system, before it, respectively its components, is implemented. There are then usually different ways how to get from the design to the implementation, but the design in the form of the design document needs to provide enough information to communicate the ideas of the design team to various groups, not only the people that have to implement the system.

For the dynamic web site teaching a Python concept that each student needs to develop, the design document should inform the reader about the following points (this can be used to structure the document):

  • The overall structure of the web site, i.e. what pages constitute the web site and how are they connected to each other. Note that since many of the pages are dynamic, the structure should also report under what conditions you go from one page to another.
  • For each web page in the teaching part of the site:
    • the layout of the page
    • the content of the page, like language construct covered, examples to be used and so on.
    An indication what established way to present the syntax of language constructs will be used should also be provided.
  • For the part testing the understanding of the user:
    • the intended questions
    • the intended programming example that the user needs to submit to the system
    • the intended tests the system should perform to test the submitted program for correctness
  • the intended backend functionality, which means a description of the programs you want to develop for the server that make the web pages dynamic and that deal with, for example, the evaluation of the answers to the questions of the testing part. This description should include:
    • the needed classes
    • the needed methods for each class (no code, just textual descriptions what the method should do).

Some of the above information is best presented in the form of figures. These can be sketches made by hand that are scanned or pictures of those sketches made with a cell phone or other device and that are then put into the pdf-file a student has to submit.

It is also understood that on the way from design document to implementation some changes can happen.

The meetings with the students for this assignment will happen from October 6 to 9.

Deadline: Oct 10, 2014 at noon

A web site to teach a Python concept and to evaluate the understanding of a user

The web site that the students develop and implement, fulfilling the given requirements, is the key assignment of the class. This web site will be using Java 7 and JSP within a Tomcat web server on its own subdomain for each student.

While providing the necessary functionality in a correct way is the major criterion for the evaluation of this assignment by the instructor, the presentation and the quality of the teaching experience will also be taken into account (the later might even be used to look over minor shortcommings of the document describing the web site, which is the next assignment).

The deliverables to the instructor for this assignment are

  • a tar- or zip-file containing all the Java code and page sources of the web site and
  • the URL of the login page for the web site

The meetings with the students for this assignment will happen from November 24 to 27. But students are encouraged to have this particular assignment ready earlier and then to have a meeting with the instructor early, so that there is time to fix any problems before the assignment deadline!

Deadline: Nov 28, 2014 at noon

A document describing the web site

While the web site should speak for its own, there is nevertheless a lot of information about the web site that is not easily available by just interacting with the web site. An example are the programs that are on the server. Therefore we need a document that provides this additional information that would, for example, allow another developer to make changes to the web site.

In our case, the document should cover the following topics:

  • The overall structure of the web site
  • The classes and methods used on the server side and their functionality (no code!)
  • The dependencies between the classes, described via UML class diagrams or any other established presentation method
  • Comments on the 3 parts of the side, providing the reader with an idea what the student was thinking when deciding on how to do these parts.

Note that there is some overlap with the topics covered by the design document and, provided that nothing has changed, it is definitely allowed to copy from the design document.

The same meeting as for the web site should also be used to talk about this document, which means that it will be between November 24 to 27. But, especially if the meeting for the web site happened earlier, it is possible to have a meeting just dedicated to the document.

Deadline: Nov 28, 2014 at noon

A test report for another student's web site

The testing of software systems is an important part of the whole development cycle and part of the testing efforts should be to have the final product tested by people other than the developers. In our case, testing should focus on the functionality of the web site, establishing that all requirements are met, but also looking a little bit into possibilities for abuses of the pages of the site.

Since the web site is intended to teach a Python concept, it naturally should also be evaluated how well the site does this. But it should be stated here that the instructor is well aware that different people often learn differently and that he will take this into account when evaluating this part of the report.

The test and evaluation report should cover the following topics:

  • a description of all tests performed by the tester, containing for an individual test:
    • the test goal,
    • the test set-up, and
    • the test result.
  • Answers to the following questions:
    • Do you think you can learn the intended concept from this web site?
    • Are the examples good?
    • Are the test questions appropriate and do they cover the whole concept?
    • Is the programming question well selected and clearly described?

Given the short time frame between the last two assignments and this assignment, the meetings for this assignment will be shorter than the meetings for the previous ones, which will allow for having all of them in the two days before the deadline. Nevertheless, the instructor will be offering meeting time slots on all days from Dec 1 to 4.

Deadline: Dec 5, 2014 at noon

to the timetable for the course.

Last Change: 4/9/2014