International Seminar, Borovec, September 25-26, 2004.

University education on programming

Nikolay Kirov Kirov
New Bulgarian University
This page:


1. Teaching Programming

2. Programming Contests for University Students

3. Why HTML? What's Wrong with PowerPoint?

Teaching Programming

Learning to program is a fundamental part of degree-level education in computing. Teaching programming effectively in today's mass Higher Education is a problem. The graduating student who professes a complete inability to write the simplest program is commonplace.

The list of the Bulgarian universities with teaching in programming

State universities
Sofia University "St. Kliment Ohridski"
Faculty of Mathematics and Informatics
[Bachelor's Degree in: Informatics, Computer Science, Applied Mathematics, Mathematics; Teacher's degree in Mathematics and Informatics]

University of Plovdiv "Paisii Hilendarski"
Faculty of Mathematics and Informatics
[Bachelor's Degree in: Informatics, Mathematics; Teacher's degree in Mathematics and Informatics]

South-West University "Neofit Rilski"
Faculty of Mathematics and Natural Sciences
[Bachelor's Degree in Informatics; Teacher's degree in Mathematics and Informatics]

St. Cyril and St. Methodius University of Veliko Turnovo
[Bachelor's Degree in: Informatics; Teacher's degree in Mathematics and Informatics]

Shumen University "Konstantin Preslavsky"
Faculty of Mathematics and Informatics
[Bachelor's Degree in: Informatics, Mathematics, Teacher's degree in Mathematics and Informatics]

University of Rousse "Angel Kantchev "
[Bachelor's Degree in Informatics; Teacher's degree in Mathematics and Informatics]

Technical state universities
Technical University of Sofia
[Bachelor's Degree in Applied Mathematics, Engineering (various subjects)]
Technical University of Gabrovo
[Bachelor's Degree in Engineering (various subjects)]
Technical University of Varna
[Bachelor's Degree in Engineering (various subjects)]

Economics state universities
University of National and World Economy
Faculty of Informatics
[Bachelor's Degree in Informatics, Business Informatics]

Varna  University of Economics
[Bachelor's Degree in Informatics;  Teacher's degree in Mathematics and Informatics]

Non state universities
American University in Bulgaria

New Bulgarian University
[Bachelor's Degree in Informatics]

Burgas Free University
[Bachelor's Degree in Informatics and Computer Sciences]

Varna Free University "Chernorizets Hrabar"
[Bachelor's Degree in Informatics]

Informatics (Computer Science)

Introduction in 
Data Structures 
and Programming
Sofia U 60+30+30 60+30+30* 60+30+30*
U Plovdiv 60+0+40 60+0+40 60+0+40
SWU 60+15+30 45+30+30 45+0+30
UVT 30+0+60 45+0+30 (+45+45+0)** 45+0+45
Shumen U 45+30+30 45+30+30 (+45+30+30)*** 45+15+30
U Rousse 60+0+30 60+0+30  60+0+30
VUE 75+0+45 45+15+30 -
NBU 30 60+0+60** 45
BFU 30+0+45 30+0+45 30+0+45
VFU + + +
**Algorithms and Data Structures
***Data Structures

Engineering (Computer Systems and Technologies, Communication Techniques and Technologies, etc.)

Programming and Using Computers I Programming and Using Computers II
SWU 30+0+30 30+0+30
U Rousse 30+0+30 30+0+30
TU Sofia 30+0(15)*+30 30+0(15)*+30
TU Gabrovo 30+0+30 30+0+30
TU Varna 30+0+30 30+0+30
BFU 30+0+30 30+0+30

*For Computer Systems and Technologies

Programming Languages
In the last few years the demand from students for relevant, directly applicable and up-to-date skills has lead many universities to move to teaching C++ or Java, using a true object oriented approach.

The most of the lecturers use MS Windows operating system. The integrated program systems for C++ are Borland C++, MS Visual C++ 6.0, a free GUI C++ compiler named Dev-C++ and DJGPP compiler. Only the last two systems have full support of the C++ standard. UNIX-like operating systems are more suitable for introductory courses in programming, especially for C++ language.

How important is the interface for computer-based programming tutors? Are there new methods presenting programming environments to students that we should be adopting?

Algorithms or Programming
What is better to learn first: algorithms (with language independent approach) or programming (with some programming language)? The hen or the egg? One possible answer is both, starting from simple algorithms and a small subset of a given programming language.

The majority of university level courses offer a similar experience to all students. However in the teaching of introductory computer programming this practice has become increasingly difficult to justify, due to the widely differing initial experience of students.

We observe that a significant number of first year students have an excellent level or equivalent in Informatics. Many have a little industrial experience, and a few have worked in IT for a year out. Yet at the other end we observe that a fair number of students have little experience of computers beyond game playing.

Tony Jenkins from Leeds University presented a paper describing a differentiated approach to teaching introductory programming. At Leeds they used an aptitude test to categorize students as either Rocket Scientists, Averages or Strugglers. Rocket Scientists were already highly proficient programmers. Strugglers were those who would need support to help them achieve a fair standard. The Averages are those who will pass the course well with only occasional assistance. The Rocket Scientists probably do not need to attend the course and were given alternative projects to keep them enthused. The Strugglers were given extra attention in the form of supervised hands-on lab sessions with high teacher to student ratios.

"At first sight, teaching programming appears to be a straightforward task. Most staff who might be asked to teach a programming course will be fluent in at least one language, and will probably not be concerned at the prospect of learning another if necessary. There are plentiful textbooks covering all languages, paradigms and approaches. The material itself can be arranged neatly to fit into a lecture course over one or two semesters, and can be readily arranged in order of increasing complexity. Assessment is a simple matter of devising some suitable programming tasks."

In Bulgaria there are actually not enough skilled lecturers and instructors in programming. Because the people with good ability in programming prefer to work in IT industry than teaching at the universities.

Programming Contests for University Students

Programming contests for university students is an activity of a group of university lecturers that provides university students with an opportunity to demonstrate and sharpen their  problem solving and computing skills. Our ambition is to involve all the students with good results in informatics and programming from all Bulgarian universities.

About contests for university students
Association for Computing  Machinery organizes annual ACM International Collegiate Programming Contest.
Rules for ACM contests.

Basic rules:
Each team consists of three contestants.
Each team uses a single computer.
The programming languages are Java, C++, C and Pascal.
Contestants may bring resource materials such as books, manuals and program listings. They may not  bring any machine-readable versions of software or data.
Solutions to problems submitted for judging are called runs. Each run is judged as accepted or rejected by a  judge, and the team is notified of the results.
Teams are ranked according to the most problems solved.

Recent programming competitions in Bulgaria

Interuniversity Programming Contest March 24, 2002 BFU 
5-th Interuniversity Programming Tournament May 19, 2002 BFU 
1-st International Programming Contest April 19, 2003  SWU
6-th Interuniversity Programming Tournament May 10, 2003 Shumen U
2-nd International Programming Contest March 28, 2004 SWU
7-th Interuniversity Programming Tournament May 8, 2004 U Plovdiv
2005 - planned
3-rd International Programming Contest March, 2005  SWU 
8-th Interuniversity Programming Tournament
[?-th National Olympiads in Programming]
May, 2005 Sofia U 

The results of the universities teams

IPC(02)  5-th IPT(02) 1-st IPC(03) 6-th IPT(03) 2-nd IPC(04) 7-th IPT(04) No.
1 Sofia U 1 1 1 1 1 1 6
2 U Plovdiv 2 4 4 4 3 2 6
3 SWU 8 7 6 6 7 8 6
4 UVT 8 10 - - - 8 3
5 Shumen U 7 9 8 3 4 5 6
6 Rousse U - - - 8 - 8 2
7 TU Sofia - - - - - - 0
8 TU Gabrovo - 5 - 9 - - 2
9 TU Varna - - - - - - 0
10 UNWE - - - - - - 0
11 VUE 4 6 3 5 6 6 6
12 AUB 3 2 5 2 5 4 6
13 NBU 6 8 8 7 7 3 6
14 BFU 5 3 - - - 7 3
15 VFU - - - 9 - 8 2

No. Univ 9 10 7+2 10 7+1 11

Training advanced students for programming competitions

  • Basic courses in programming and algorithms;
  • Special courses (Programming and analysis of algorithms, Advanced programming, etc.);
  • Internet based training;
  • Internal university contests.

  • Why HTML? What's Wrong with PowerPoint?

  • HTML is an international open standard. PowerPoint is a proprietary and undocumented file format.
  • There are many programs that can display and edit HTML, on multiple platforms. PowerPoint requires Microsoft Office on Windows or the Macintosh. Microsoft Office is fairly expensive, and some people dislike the fact that it is prone to virus attacks.
  • It is easy to integrate tools into an HTML production process, for example the code syntax highlighting and line numbering tool.
  • It is faster to create your own slides in HTML because you won't be tempted to use fancy effects :-)
  • HTML files are a fraction of the size of PowerPoint files.
  • The HTML format is likely to be stable over time. There is no assurance that future versions of Microsoft Office can read today's PowerPoint files. (The current version of Office has trouble reading files that are produced with much older versions.)
  • Finally, by showing HTML slides to your students, your students will get the message that computer scientists care about open standards.

  • Cay Horstmann