General

Schedule
The course "Web Technologies" takes place in February/March 2007. The last lectures take place on March 30, since students graduating in Spring 2007 may need time for their thesis. The course will meet twice per week: Thursdays and Fridays, at 16:30.
[top]

Location
Lectures will take place in auditorium 413 of the University of Latvia, (Raina bulv. 29). Lab exercises, home assignments and the multiple-choice test can be done elsewhere and submitted electronically.
[top]

Lab Sessions
Non-mandatory practice sessions will take place in a computer lab at Accenture, Brivibas 214 on Wednesdays from 18:15 to 21:00. There you will have chance to do the course assignments under some supervision, and to share knowledge with instructor and fellow students. Attending these lab sessions is free of charge and it does not affect the course requirements or grading in any way, except that those who sign up for the lab session have responsibility to show up for these sessions or inform the instructor BEFORE missing any practice session. More details about the lab sessions will be given shortly before the start of the course.
[top]

Course target audience
All master level students of Computer Science are welcome; "Web Technologies" is mostly intended for the 2nd year students. It can be taken by the 1st year students as well. If you are not a student in the Master's program in Computer Science at the University of Latvia, please contact the instructor to find out, if you can take this course.
[top]

Instructor
LU temporary staff: Kalvis Apsītis (PhD).

E-mail: account kalvis.apsitis at the gmail.com domain

Skype-ID: "kalvis.apsitis"

Phone: +371 2911 2997
[top]

Activities

What are the requirements?
To get a positive grade student must successfully submit at least 1 individual homework and complete first two lab exercises by his/her team. A multiple-choice test and an opportunity to do more than one individual homework and the 3rd lab exercise is also being offered - this would count for a higher grade.
[top]

How is the grade computed?
The lab exercises are worth 60 grade points, a multiple-choice test - 16 grade points, individual homeworks - 24 grade points. All the grade points are added for a given student, the total is denoted by N (N=0,...,100). The grade for the course is the largest integer M such that 10*M does not exceed N. One CANNOT avoid doing the mandatory part of the course by gathering grade points for other activities, see the requirements. Getting a positive grade ("4" or more) requires at least 40 grade points; it may become necessary to submit more work, if your team's gradepoints are lost due to submitting the lab exercises late.
[top]

What kind of computer is needed?
For this course a reasonably good PC is recommended, e.g. 80G disk space, 1G RAM, a 3GHz CPU. The parameters can also be smaller than that, but it could be too slow, if Eclipse, JBoss, MySQL and a couple of browsers are running simultaneously. All course material is written assuming Windows XP machines, but it can be easily adopted for Linux as well. Software needed for this course is mostly freeware or shareware listed in the installation instructions. It is better to install it as needed rather than all at once.
[top]

What are the lab exercises?
There is a set of 3 interdependent lab exercises. They are intended for teams of 2-3 people and have deadlines. Packaging the solution and the requirements for successful submission are explained with each lab exercise.
[top]

How are the lab exercises graded?
Lab exercises have "public" JUnit and Selenium tests, which the teams are responsible for passing entirely. There can be a few more "private" tests, which do additional checks of the lab exercise requirements - they may affect the grade, but passing them is not mandatory, i.e. team can get a reduced grade for their implementation, if some "private" tests are not passed. Each team member gets the same grade for the exercise - up to 20 grade points. The guidelines for finding the score depends on the lab exercise, see e.g. Lab 01: Guidelines for Evaluation.
[top]

What is the late policy for lab exercises?
For late submissions the score for the exercise is multiplied by a common ratio r = 0.9 for each day they are late. I.e. for being n days late, the total score earned by the exercise is multiplied by (0.9)n. If the result is a fraction, the number is rounded to the precision of 0.01 grade points before being added to the total. If you submit a code that is not packaged correctly or does not compile or does not pass all the provided tests, you get another chance of submitting the project, but the grade is multiplied by the same ratio r for each extra submission.
[top]

Final discussion
After your team has submitted the lab exercises, there is a discussion between the project team and the instructor. Office hours will be set up, and each team will pick a timeslot. All the team members are expected to understand all portions of the code they are submitting as their lab exercises and to be articulate and professional while explaining it to the instructor. Those students who cannot explain the code they are submitting or do not show up for the final discussion can be asked extra questions about various course topics before their earned grade is recorded.
[top]

What are individual homeworks?
These are small programming assignments on a wide range of isolated topics. Individual homeworks do not have submission deadline.
[top]

Which individual homeworks you are assigned?
There is a finite list of individual homeworks. Any student draws 3 numbers from a "hat" provided by instructor; out of these 3 numbers you can pick one, which becomes your mandatory homework, the other two numbers can be ignored. This procedure gives you some freedom picking the homeworks according to your interests. On the other hand, the instructor can avoid everyone doing the same thing.
[top]

How are the individual homeworks graded?
Each individual homework, which satisfies the described requirements, gives you 8 grade points. You can submit two extra homeworks and they also give you 8 points each. You cannot get more than 24 grade points for individual homeworks. The two voluntary homeworks you can select as you wish, they do not need to come from the "hat".
[top]

What is the multiple choice test?
Multiple choice test has questions on theory and skills topics listed in the list of topics. Answering a test question means finding exactly M correct answers from given N answer options (N=2...5). The number of correct answers M N is always known in advance, most often M=1.
[top]

What is the procedure to take the multiple-choice test?
The multiple choice test can be taken from any computer connected to the Internet. There will be certain time windows, when the test is available. A student willing to take a test, registers in the testing system and tells his/her account name to the instructor. A typical test has 80 questions and takes up to 120 minutes. Some standard documentation (e.g. javadocs and specifications) is explicitly listed and may be used during the test. If students are aware of other useful documentation, instructor can add it to the list. On the other hand, using full text search engines (e.g. Google) or software tools during the test is strongly discouraged. Prior to the test sample questions are made available to avoid surprises regarding the content and the style of the questions.
[top]

Grading of the tests
Raw score S shows, how many questions are answered correctly. Test is passed, if the raw score S>=72, i.e. at least 72 questions out of 80 are answered correctly. The number of points earned is S-64. E.g. if someone takes the test three times and gets raw scores of 55, 65 and 75, then the test is passed from the third attempt and gives 75-64 = 11 grade points out of 16. One can improve the grade by taking the test many times.
[top]

Can the lab exercises use alternatives to Java/Spring?
There are many good Web programming frameworks like PHP/CakePHP, Python/ZOPE, ASP.NET, which guarantee relatively higher speed of the development than Java/Spring. Nevertheless it is deemed that object oriented Web programming can be learned on the basis of Java. We encourage you to try this language; even though you would not need it for anything else. The only possible alternative to Java is Ruby/Rails - see extra credit.
[top]

What about the extra credit?
If you like to code and test in Ruby/Rails, your team can submit an alternative solution to the same 3 lab exercises in Ruby/Rails technology. It should have your own component testing suite, but also uses the provided Selenium test suite. This means Web application with the same behavior, possibly using a different Web server, a different port and another server-side technology. The coding might be somewhat faster in Rails, but there is more test development work for you to do. There should not be any slack on component/unit tests compared to coding in Java. If you submit a Ruby/Rails version of a lab exercise on time, you can get a maximum of 25 points for each lab exercise (instead of 20). The common ratio r=0.9 still applies for every day your team is late and for each resubmission of incorrectly packaged or wrong solution.
[top]

Communication

How are the teams created?
The students create and announce their teams of 2 or 3 people to the instructor. It should be done BEFORE the deadline of the first lab exercise. Single person "teams" are also allowed, but the required amount of work remains the same. Each team announces one person, which will make the lab exercise submissions from that team.
[top]

What collaboration is allowed?
When the students are not actually writing code and are not taking the test there are no limitations of how they can help each other. Students can discuss all their assignments, draw diagrams, write and discuss pseudocode, share books and public links in the Internet, help each other to analyze sample questions for the test.
[top]

What is considered academic dishonesty?
During the coding it is obviously OK to search the Internet or ask some general questions to others, but one should NOT use ready artifacts made by other people (or other teams in the case of lab exercises). In other words, students should not look at others' work on the same problem while creating their solution. During the multiple-choice test you can use the explicitly listed reference materials and documentation.
[top]

Are the evaluations and grades for the course confidential?
Instructor tries to keep everyone's grades confidential. Grade points should be known only to the student himself/herself. Due to the grading practicalities people from the same team might in fact know each other's evaluations. Students are asked to respect each others' personal data.
[top]

Are the materials copyrighted?
The documents for this course are intended for the WebCT system of the University of Latvia, so the restrictions imposed by the WebCT apply. On the other hand, all the sample code is public domain and can be used everywhere. Same thing applies to the code submitted by students, if they do not ask the instructor explicitly NOT to make their solution public or reuse it. Properly attributing software artifacts to their original authors (e.g. preserving author identification in the program comments) is encouraged.
[top]