VU Software Engineering (Programų sistemos) Review
A review of the Programų sistemos bachelor at Vilnius University.
Vilniaus universiteto Programų sistemų bakalauro studijų programos apžvalga - dalykai, dėstytojai ir įvertinimai. Puslapis parašytas angliškai.
Ratings
Everything is graded on a 0-10 scale.
- Difficulty How hard the material was to understand and pass.
- Workload How much time it demanded - lectures, homework, projects.
- Usefulness How relevant and useful the topics covered are to computer science and software engineering.
- Quality How well and how engagingly the subject was taught - textbooks, slides, labs, professors.
- Takeaway How much I personally came away with. Could be low if it was taught badly, or if I already knew the material.
1st semester
2025 autumn
1st semester
2025 autumn
Notes
Attendance was only manditory for english, with some cap on lectures allowed to skip. You can skip the rest and self-study, though labs are necessary when accounting for homework; no advantage by going to lectures over self-study. None of the subjects required prior knowledge which you couldn’t get from a google search. All subject grading was either labs + exam or test + exam.
Final grade was 9.33, ranked 17/188, got a scolarship of 814 EUR. A friend placed 25th or so with a ~9 and didn’t get it.
Subjects
English
- Laura “nu whatever” Giniūnienė
Same as school - exercises and learning concepts only a person taking a major in english would need. At least we did some speaking stuff which is always useful. I still don’t get the purpose of such classes, I find that everyone learns best through the internet and talking to people. Professor tried her best though.
- Difficulty 2
- Workload 4
- Usefulness 4
- Quality 2
- Takeaway 0
Discrete Mathematics
- Gintaras Skersys
Didn’t attend many of his classes, but the professor seemed chill; he primarily read his slides and answered occasional questions. All material was well prepared and available online as PDFs together with lecture recordings, so you could learn everything from home and get a good grade. On the contents: most wasn’t that difficult, there was a lot of terminology to memorize. Most interesting topics for me were:
-
Boolean algebra. Every operation can be reduced to a sequence of ANDs, ORs and NOTs; basically logic gates in CPUs.
-
The introduction on cryptography caught my interest and I went on to read The Code Book by Simon Singh and download some other crypto books.
Other topics were: sets, functions, math proofs, turing machine, encoding, compression.
- Difficulty 5
- Workload 6
- Usefulness 10
- Quality 7
- Takeaway 10
Computer Architecture
- Vytautas Valaitis (Lectures)
- Kęstutis Mizara (Labs)
The lectures were fun at the start but eventually got boring. Valaitis is cool though (check out his facebook). I found the labs interesting because they taught me my first assembly language (8086), we had to do a couple coding projects with it; there was also an option to write a disassembler to get an almost (still had to answer a couple questions during the exam) instant 10/10 grade.
The theory material was taken from a PDF “Kompiuterių architektūra - Antanas Mitašiūnas”. I thought it touched on many of the main CA concepts like how computers represent data with bits, instruction set architecture (in this case 8086’s), and it presented Mitašiūnas’ own 16 bit computer which covered the main pieces of a CPU. Anyways, it had some poorly written explanations which were hard to grasp; and it felt introductory, not covering question which came up as I read the book.
I found a couple of CA textbooks from teachyourselfcs which I think will fill in the gaps: The Elements of Computing Systems and CS:APP.
- Difficulty 5
- Workload 6
- Usefulness 10
- Quality 6
- Takeaway 10
Mathematics for Software Engineering 1/3
- Edmundas Mazėtis
Whole thing was an introduction to linear algebra and complex numbers. The material was provided as PDFs - I found it dull so I never got around to learning until the exam. It was also very proof-based and had no intuition at all, which was demotivating. Essence of linear algebra by 3B1B really helped me build intuition and understand what this course was trying to teach me. Without it, I probably would’ve neither enjoyed the course nor got a good mark.
Regarding linear algebra’s usefulness: I haven’t used anything so far, but if I ever try to learn how AI or computer graphics work, it would come in handy. Though I wouldn’t recommend this course for it and instead go with what teachyourselfcs recommends: the mentioned 3B1B playlist and Introduction to Linear Algebra by Gilbert Strang.
- Difficulty 5
- Workload 4
- Usefulness 9
- Quality 4
- Takeaway 10
Practical Informatics
- A. V. Misiukas Misiūnas (Lectures)
- Jonas Žagūnas (Labs)
Lectures consisted of the professor reading his slides. The lab classes: just show Ž (Žagūnas) the homework you did which was largely copy-paste from the lecture slides. The labs could have taken 20 min instead of 2h if Ž didn’t yap as much. The covered topics were themselves quite practical: Git, Python and Latex. But you don’t learn practical things just by reading slides, which is what this class was. It was very shallow and only touched on the basics. At least I found out about Pro Git from it.
- Difficulty 1 *look out for Ž
- Workload 1
- Usefulness 8
- Quality 2
- Takeaway 1
Procedural Programming
- Irmantas Radavičius
Cool professor, though that’s gonna be subjective. It was basically an introductory course on C, not too difficult. The labs were 4 coding assignments; most work came from the fact that you needed to record yourself presenting your code and write a self-reflexion paragraph. The exam was on paper and different than any others - there were no single correct answers and I believe everyone wrote different ones, so I’m guessing the professor was grading more of our understanding and thinking than our final answers.
- Difficulty 2
- Workload 4
- Usefulness 9
- Quality 4
- Takeaway 3
2nd semester
2026 spring
2nd semester
2026 spring
Notes
Attendance was not manditory, I’d recommend going to Algorithm Theory though. No prerequesites, although: discrete math class helps in Algorithm Theory, and procedural programming helps in OOP C++ to see the differences between the 2 schools of thought.
Final grade was 8.83, scolarship status still pending.
Subjects
Algorithms and Data Structures
- Vytautas Valaitis (Lectures)
- Jonas Žagūnas (Labs)
All in all, this was a very boring one. I’ve gotta say, ADS interests me, though it’ll have to wait, because I couldn’t get myself to study it in this course. The labs were pretty bad too - it would have made no difference if we had them or not; we had to do 4 coding assignments implementing different data structures, but I and everyone I asked did not get any value from them. I went to a couple of lectures and the slides seemed well made, but the presentation and the whole vibe was depressing. Though I can’t be sure if it was the slides or ADS that caught my interest. Probably the latter. The lectures went over various algorithms and data structures.
- Difficulty 2 *look out for Ž
- Workload 4
- Usefulness 10
- Quality 3
- Takeaway 1
Algorithm Theory
- Adomas “aišku tikiuosi” Birštunas
The professor carried this course. Very cool guy, I even got to play table tennis with him once. The material is available as an english PDF by him or another lithuanian PDF by his former student, both available on his website. There are recordings of his lectures back from Covid as well. However, I’d still recommend everyone to attend his lectures and labs, because it’s entertaining and he explains things well; and because the PDFs aren’t very readable.
The material isn’t very difficult: it builds on the discrete math class from the previous semester by teaching various math-proof techniques; it discusses algorithms and how fast they grow, lambda calculus, turing machines, and functions among other things.
- Difficulty 6
- Workload 5
- Usefulness 7
- Quality 8
- Takeaway 8
Mathematics for Software Engineering 2/3
- Gintautas Bareikis (Lectures)
- Rimvydas Krasauskas (Labs)
This class covered sequences, series, limits, derivatives and integrals. The lectures were fast paced, to the point that the professor kept going on without any regard for whether the students were still following along. Everyone I asked had completely lost the plot after the first couple of lectures - from that point on you had to study from home to catch up.
The difficulty ultimately came from this. I personally don’t think calculus is that difficult, but this class sure made it seem that way.
The labs didn’t help as well, we were stuck at the basic definition of convergence and deriving simple functions for the better half of the semester. Afterwards I started skipping them and just studied for the tests myself. I found the provided PDFs too difficult for self-study, so I turned to Claude to summarize everything and just went with memorization and grinding instead of understanding. Thanks Claude.
- Difficulty 8
- Workload 4
- Usefulness 5
- Quality 2
- Takeaway 2
Object Oriented Programming
- Rimantas Vaicekauskas (Lectures)
- Linas Litvinas (Labs)
Lectures were a bit slow paced and you could see people falling asleep as they went on. You could honestly learn faster on your own which is what most did. Labs were simple coding tasks to show understanding of a single principle of OOP or a design pattern. You could get 8/10 points just from labs, and 4/10 from the exam. Exam was on moodle. Everything was in Java.
- Difficulty 2
- Workload 3
- Usefulness 9
- Quality 6
- Takeaway 4
Object Oriented Programming C++ (Optional)
- Irmantas Radavičius
This class taught the main principles of OOP and how they’re applied in C++. Classes were taught from presentation slides (available online). It was fun and educational listening to the professor philosophise but I couldn’t get myself to concencrate for 2h straight. Expect similar stuff as in first semester’s procedural programming.
The labs were made up of 3 individual coding tasks and 1 team project split up into 3 parts. The former were simple assignments, where you had to show your understanding of a OOP principle. For the team project you could choose to code whatever you wanted, my team chose a chess app. I put in some extra work in it since it interested me - thus the higher workload score. Otherwise it was smooth sailing. The exam was a set of 50 code snippets, where you had to write down what would get printed by each of them.
- Difficulty 4
- Workload 7
- Usefulness 9
- Quality 7
- Takeaway 7
Žmogus, buitis ir chemija (Optional)
- Aivaras Kareiva
I chose this class as a filler so I could have more free time. It’s fully online and attendance is not mandatory. It’s just the professor showing his slides and explaining things. I sat through a couple of the lectures and the topics sounded basic but interesting. The grade came from 3 online tests on moodle, with no kind of supervision.
- Difficulty 0
- Workload 0
- Usefulness 0
- Quality 6
- Takeaway 0