Solving Problems and other Games

B232 - Summer 23/24
This course is not present in Moodle. You can visit its homepage by clicking the "Course page (outside Moodle)" button on the right (if available).

Solving Problems and other Games - B4B33RPH

Credits 6
Semesters Winter
Completion Graded Assessment
Language of teaching Czech
Extent of teaching 2P+3C
Annotation
The main motivation is to let students to deal with real-world problems properly. When working on real problems the student shall learn how to decompose the big problem, how to define interfaces, how to test and validate individual steps and so on. Many problems will actually be beyond the first-year-student skills. And many problem will not be solved in the optimal way. The unsolved parts should motivate the students to study difficult theoretical subjects. They should generate the important questions. Ideally, at the end of the subject, the student should be eager to study deeper about informatics. The course also explains the basis of the object oriented design, software testing, ways for writing readable and robust codes.
Study targets
The main motivation is to let students to deal with real-world
problems properly which includes Thinking about problem, its decomposition, testing, verification, evaluation.
Course outlines
1. Introducting course basis.
2. How to write a computer program, variables, execution.
3. Objects as the main building blocks.
4. Functions.
5. Conditionals.
6. Compound data types, iterators.
7. Iterators.
8. Exceptions, making programs robust
9. Testing and evaluating programs.
10. How to write a clean code
11. Motivation lecture I
12. Motivation lecture II
13. Motivation lecture III
14. Closing
Exercises outlines
Students will work independently on several programming assignments. They will regularly submit intermediate results and discuss the progress with teaching assistants. The list of assignements may change over time span of the course: Spam filter. How to represent frequency of bad words. Reversi (Othello). A two player game. Playing in tournaments against each other. Zip code optical character recognition. Finding the optimal path for a mobile robot through the labyrinth. Iterative prisoner's dilemma. Cooperate or not, all student players will play againts each other.

Literature
1. Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers. How to Think Like a Computer Scientist. 3rd edition, 2012, http://openbookproject.net/thinkcs/python/english3e/ český překlad Jaroslav Kubias, http://howto.py.cz
2. Mark Pilgrim. Dive intoPython 3. Český překlad Petr Přikryl, http://diveintopython3.py.cz
3. Doporučená tématická četba k jednotlivým úlohám.