JOIN
Get Time
forums  Revision History
Search My Post History  |  My Watches  |  User Settings
Forums Round Tables General Career Discussions Re: Experiences with hiring... Revision History (1 edit)
Re: Experiences with hiring... (response to post by tywok)
How is it in Warsaw? Is it hard to get a CS degree? As hard as a math one?

Much harder. Only a handful (150 or so) CS students from all over the Poland are admitted each year. When you come to school, you have to pick your major in advance. In Poland you can't study English first and then decide to go for CS major - you have to be focused on CS from the get go.

After that, there are 5 quite though years (most people take part in Masters program). Year 1 is mostly theoretical, after that there's quite a lot of programming. I can give you a list of courses I took during my studies (courses with "lab" in the name take place in the laboratory and give separate grade). Each course is semester-long. If a course requires more time, it's divided into smaller pieces.

Year 1:
- Analysis 1.1
- Discrete mathematics 1
- Linear algebra 1
- Introduction to programming 1 (in ML or Pascal)
- Theory of sets

- Analysis 1.2
- Discrete mathematics 2
- Linear algebra 2
- Logics
- Introduction to programming 2 + lab (in ML or Pascal)

Year 2:
- Algorithms and data structures
- Analysis 2.1 (for math degree)
- Databases
- Databases: lab (design and implement a web page with PL/SQL backend)
- Object-oriented programming
- Object-oriented programming: lab (design and implement a game in Smalltalk)
- Topology 1 (for math degree)

- Analysis 2.2 (for math degree)
- Low-level programming (a lot of programming tasks in assembler)
- Software engineering
- Software engineering: lab (design a complex system)
- Concurrent programming
- Concurrent programming: lab (a lot of quite tough programming tasks in C)
- Probability theory 1 (for math degree)
- Differential equations (for math degree)

Year 3:
- Algebra 1 (for math degree)
- Languages, Automatas, Computations
- Numerical methods
- Probability theory 2 (for math degree)
- Semantic and verification of programs
- Operating systems
- Operating systems: lab (large programming tasks, like design and implement ACL module for linux kernel, each of 4-5 tasks can take 1-2 weeks of hard work)
- Team project 1 (design and implement complex system in Java in groups of 4)

- Computer Networks (I had to write a P2P system, this year people are writing VOIP telephony system)
- Team project 2 (as above)

All of above are compulsory and have to be taken as listed. It's very difficult to pass operating systems or computer networks unless you can program reasonably well. Some people, when they come here, can't, but since the classes are compulsory, students can collaborate and exchange information and programming techniques as they learn them. It's invaluable when working on some obscure and undocumented part of Linux kernel.

Other compulsory classes which can be taken in random order:
- Artificial intelligence
- Artificial intelligence: lab (write speach recognition system, or sth like that)
- Programming in logic (Prolog) (mostly useless and despised by many, next year will be dropped out from this list)
- Compiler design
- Compiler design: lab (write a full compiler, this year for Javalette)
- Algorithmics
- Functional programming
- Functional programming: lab (write something that shows how cool ML is)

Apart from that, one has to take a number of free-choice classes. There's also physical education and some general education classes, but it doesn't matter here.

As you see, we have number of theoretical and programming courses. You have to do reasonably well in both. You can't pass a programming class without doing some actual work and learning something.

Our CS program is still evolving. If a course doesn't prove itself useful (like prolog) it can be dropped out. If students are unhappy with a teacher, he/she can be replaced.

Everything is flexible. For instance, if you don't like to attend classes, but do your homework and write programs, you're fine. Recently a smaller Polish version of MIT's OpenCourseWare hed been started and lecture notes for all compulsory courses are available online. Even before that, most professors wrote and published online their own lecture notes.

A large population of students take part in programming contests. It's a hip shot, but I'd say it's 30-40% of all students. It's even more popular among students that take algorithms and data structures course as if you do well, you'll get a better grade.

The best thing is that there are all these smart people around you that you can learn from.

I have to say that I learned quite a lot thanks to this environment. If you take a look at my rating graph, it reflects not only my TC skills, but my general programming skills as well.

I'm a double math/CS student - I picked math because I loved it and CS just in case, to have better chances for a good job. During my senior year in high school, when I took part in CS workshop of Polish Children's Fund where tomek was one of the tutors, I remember he was totally horrified when he saw some of the code I produced there :-) In Warsaw I learned so much I fell in love with CS so much that math can't even compete :-) That's what I meant by "lucky" in my first post - I wasn't being cocky, I honestly admit I would be much worse programmer (if at all) if it weren't for this environment and people that pushed me to get better and better.

[edit] Did I mention the education is free? In fact, good students can get more than Polish average salary in scholarships.
Re: Experiences with hiring... (response to post by tywok)
How is it in Warsaw? Is it hard to get a CS degree? As hard as a math one?

Much harder. Only a handful (150 or so) CS students from all over the Poland are admitted each year. When you come to school, you have to pick your major in advance. In Poland you can't study English first and then decide to go for CS major - you have to be focused on CS from the get go.

After that, there are 5 quite though years (most people take part in Masters program). Year 1 is mostly theoretical, after that there's quite a lot of programming. I can give you a list of courses I took during my studies (courses with "lab" in the name take place in the laboratory and give separate grade). Each course is semester-long. If a course requires more time, it's divided into smaller pieces.

Year 1:
- Analysis 1.1
- Discrete mathematics 1
- Linear algebra 1
- Introduction to programming 1 (in ML or Pascal)
- Theory of sets

- Analysis 1.2
- Discrete mathematics 2
- Linear algebra 2
- Logics
- Introduction to programming 2 + lab (in ML or Pascal)

Year 2:
- Algorithms and data structures
- Analysis 2.1 (for math degree)
- Databases
- Databases: lab (design and implement a web page with PL/SQL backend)
- Object-oriented programming
- Object-oriented programming: lab (design and implement a game in Smalltalk)
- Topology 1 (for math degree)

- Analysis 2.2 (for math degree)
- Low-level programming (a lot of programming tasks in assembler)
- Software engineering
- Software engineering: lab (design a complex system)
- Concurrent programming
- Concurrent programming: lab (a lot of quite tough programming tasks in C)
- Probability theory 1 (for math degree)
- Differential equations (for math degree)

Year 3:
- Algebra 1 (for math degree)
- Languages, Automatas, Computations
- Numerical methods
- Probability theory 2 (for math degree)
- Semantic and verification of programs
- Operating systems
- Operating systems: lab (large programming tasks, like design and implement ACL module for linux kernel, each of 4-5 tasks can take 1-2 weeks of hard work)
- Team project 1 (design and implement complex system in Java in groups of 4)

- Computer Networks (I had to write a P2P system, this year people are writing VOIP telephony system)
- Team project 2 (as above)

All of above are compulsory and have to be taken as listed. It's very difficult to pass operating systems or computer networks unless you can program reasonably well. Some people, when they come here, can't, but since the classes are compulsory, students can collaborate and exchange information and programming techniques as they learn them. It's invaluable when working on some obscure and undocumented part of Linux kernel.

Other compulsory classes which can be taken in random order:
- Artificial intelligence
- Artificial intelligence: lab (write speach recognition system, or sth like that)
- Programming in logic (Prolog) (mostly useless and despised by many, next year will be dropped out from this list)
- Compiler design
- Compiler design: lab (write a full compiler, this year for Javalette)
- Algorithmics
- Functional programming
- Functional programming: lab (write something that shows how cool ML is)

Apart from that, one has to take a number of free-choice classes. There's also physical education and some general education classes, but it doesn't matter here.

As you see, we have number of theoretical and programming courses. You have to do reasonably well in both. You can't pass a programming class without doing some actual work and learning something.

Our CS program is still evolving. If a course doesn't prove itself useful (like prolog) it can be dropped out. If students are unhappy with a teacher, he/she can be replaced.

Everything is flexible. For instance, if you don't like to attend classes, but do your homework and write programs, you're fine. Recently a smaller Polish version of MIT's OpenCourseWare hed been started and lecture notes for all compulsory courses are available online. Even before that, most professors wrote and published online their own lecture notes.

A large population of students take part in programming contests. It's a hip shot, but I'd say it's 30-40% of all students. It's even more popular among students that take algorithms and data structures course as if you do well, you'll get a better grade.

The best thing is that there are all these smart people around you that you can learn from.

I have to say that I learned quite a lot thanks to this environment. If you take a look at my rating graph, it reflects not only my TC skills, but my general programming skills as well.

I'm a double math/CS student - I picked math because I loved it and CS just in case, to have better chances for a good job. During my senior year in high school, when I took part in CS workshop of Polish Children's Fund where tomek was one of the tutors, I remember he was totally horrified when he saw some of the code I produced there :-) In Warsaw I learned so much I fell in love with CS so much that math can't even compete :-) That's what I meant by "lucky" in my first post - I wasn't being cocky, I honestly admit I would be much worse programmer (if at all) if it weren't for this environment and people that pushed me to get better and better.