BSc: Programming Paradigms.previous version
Programming Paradigms
- Course name: Programming Paradigms
- Course number: XYZ
- Knowledge area: Software Engineering, Programming Languages
Administrative details
- Faculty: Computer Science and Engineering
- Year of instruction: 4th year of BS
- Semester of instruction: 2nd semester
- No. of Credits: 4 ECTS
- Total workload on average: 144 hours overall
- Frontal lecture hours: 2 per week
- Frontal tutorial hours: 0
- Lab hours: 2 per week
- Individual lab hours: 2 per week
- Frequency: weekly throughout the semester
- Grading mode: letters: A, B, C, D
Prerequisites
- CSE117 — Data Structures Algorithms
- CSE103 — Theoretical Computer Science: lambda calculus
Course outline
In this course we will be thoroughly considering fundamental aspects of current programming languages and the most important paradigms in modern programming such as imperative, object-oriented, generic, and functional programming. These paradigms are now in active use by multi-million army of software developers all over the world and form the mandatory basis of success for every software professional in the 21st century. We will consider fundamental theoretical issues which are “under the hood" of modern programming. But the main attention will be drawn on practical aspects of understanding and using paradigms mentioned above. We will carefully study those paradigms using a lot of small and big program examples written in different programming languages; some of the examples will be given as practical tasks for the students. The primary focus of this course is exposing the students to the fundamental concepts of modern programming approaches, techniques and patterns and of practical aspects in programming in modern programming languages, rather than teach them to use a specific language, a particular tool or technology.
Expected learning outcomes
The course will provide an opportunity for participants to:
- Understand key principles and techniques related to the programming paradigms discussed.
- Become familiar with important techniques and best practices for solving problems in software development.
- Choose paradigms and corresponding design patterns suitable for a particular software problem.
- Get hands-on experience in modern programming.
Expected acquired core competences
- Programming languages
- Imperative programming
- Object-oriented programming
- Functional programming
Textbook
- N.Wirth. Algorithms and Data Structures. 2004.
- Structure and interpretation of computer programs / Harold Abelson and Gerald Jay Sussman, with Julie Sussman. – 2nd ed., ISBN 0-262-01153-0 (MIT Press hardcover), ISBN 0-262-51087-1 (MIT Press paperback), ISBN 0-07-000484-6 (McGraw-Hill hardcover).
- Object-Oriented Software Construction / Bertrand Meyer. – 2nd Edition, Prentice Hall Professional Technical Reference. 1254 + xxviii pp. ISBN 0-13-629155-4.
- C++ Templates. The Complete Guide, David Vandevoorde, Nicolai M. Josuttis. Addison-Wesley, 2003, ISBN 0-201-73484-2.
- Programming in Scala / Martin Odersky, Lex Spoon, Bill Venners. – 2nd Edition, Artima Inc, ISBN-10: 0981531644, ISBN-13: 978-0981531649.
Reference material
NA
Required computer resources
A projector and a notebook in the auditorium; individual student notebooks.
Evaluation
- Assignments (40%),
- Presentation (10%)
- Mid-term exam (10%)
- Final Exam (40%)