Results from the University Course for Web Programming

Today we had the final exam for the “Web Programming with PHP and JavaScript” course in the Faculty of Mathematics and Informatics (shortly – FMI) and I would like to share some interesting data and observations from my experience as one of the teachers in that course.

First, some background information – I am studying Computer Science at FMI and I am part of the guys, that teach the Web Programming course.
This is the 3rd year of the course since it’s beginning.
The course is an elective one and it aims to provide General knowledge in Web Programming (With PHP, as a backend language).

How the course works


We start by explaining what is HTTP, then move to basic HTML and CSS, after which comes PHP handling HTML Forms and managing user sessions.
When we are done with that, we start with JavaScript, first as a general language and after that, as a powerful Web Programming weapon, by introducing jQuery, AJAX and some client side libraries like BackboneJS.

The grading is as follows – the students need to accumulate up to 100 points, distributed in two main exams :

A test on the entire material, for 30% of the final score – 30 questions, 1 point each, 30 points as a maximum.
A project, which the students have to defend at the end of the semester (the final exam) for up to 70 points of the score.

All projects have the following basic requirements:

  • Have a backend part, written in PHP
  • Have a database of some kind (For example – MySQL)
  • The entire frontend must communicate via AJAX with the server (Excluding login/logout stuff)
  • The website should look good (We showed Bootstrap and Theming during the course)
  • HTML 5 syntax and semantics are required

To get a good grade (6 in our grading system), one must have 91 points and above.
To get a passing grade (3 in our grading system), one must have between 51 and 65 points.

Focus on JavaScript

This year, we decided to focus on JavaScript, because it’s becoming a popular language and we can show more awesome stuff (Like HTML 5 goodies and sockets)
We cut the material for HTML & CSS and ended up talking about the following JavaScript topics:

  • JavaScript as a programming language – syntax, structures, paradigms
  • UnderscoreJS as a main tooling library for JavaScript
  • jQuery and client side magic.
  • AJAX and BackboneJS
  • HTML 5 JavaScript API and Web Sockets
  • CoffeeScript and jQuery UI

This is a total of 6 topics per 3 hours a topic = 18 hours of JavaScript.
Thankfully, Genady Samokovarov helped a lot with good presentations to cover most of the material.

You can find all of the materials in my GitHub repo.

Results and Graphs

It’s important to keep track of result data and to see how things are progressing from year to year.

The first graph shows the distribution of the test results.
This year, the test was on the entire material and in my opinion – people did better than previous years, when it was only at half of the course.
The graph is close to a normal distribution, which some may argue that is good.

Test Score Distribution

Test Score Distribution

The second graph shows the distribution of the final grades by percentage.
There were a lot of people who did not show up for the summer session exam and are going to show up for the september one, so I removed all the “not-passing” grades (Which are quantified by 2)

The total number of students, that showed at the exam is 75.

As we can see, it’s close to an exponential distribution towards the good grades – we can say that we were quite generous with the final scoring, although we were asking a lot of questions and having people write more code at the exam, to cover their project’s requirements.

Final Grades Distribution

Final Grades Distribution

Thoughts on all of that

There’s a need for a JavaScript specific course in FMI !
The thing is – although we had 6 lectures on JavaScript and a requirement that all frontend must use AJAX, most of the students were struggling with it or just skipping that part.

Databases should be taught earlier (In FMI, all the bachelors are having DB courses in the 3rd year, which is late).
Although we have two lectures about databases – General MySQL, and how to use PHP with MySQL, good DB design comes from focusing more on that specific material.

We should drop the lecturing part, provide video materials of us explaining the material and actually have 3 hours a week of practicing and writing code / dealing with problems, not 3 hours explaining things that can be found easily on the internet.
It’s a bit extreme but in my opinion, but this will produce better results.

In programming courses, homework are important.
This solves the practicing problem from the last point. Lectures with homework is a good combination.
We dropped the homework part this year, since there was not enough time to handle 100+ people (It’s a popular course ;)) and their homework.
An automated system or peer checking can do the trick when the numbers are high, so for the next year, we are going to introduce some of those things.

An introduction to Git / Github and Text Editors (VIM / Sublime / TextMate) can be a good way to start your programming experience as a freshman in the university.
Being able to work in teams and not mess up the entire code, and not struggling with Notepad++, Gedit, Visual Studio for JavaScript, NetBeans for JavaScript, Eclipse for PHP will make students more productive.

And finally – i’d like to give credit to the guys from the teaching teamGeorgi Penchev, Genady Samokovarov, Maxim Krizhanovsky, Bozhidar Dryanovski, Vladimir Aleksiev and Emil Atanasov.

They represent some of the best examples in Bulgaria’s IT industry and Startup scene.
Without any of them, non of this course would have happened.

Write us your thoughts about this post. Be kind & Play nice.

Leave a reply.