BSc: Programming Paradigms.previous version

From IU
Revision as of 13:41, 28 June 2022 by M.petrishchev (talk | contribs) (Created page with "= Programming Paradigms = * <span>'''Course name:'''</span> Programming Paradigms * <span>'''Course number:'''</span> XYZ * <span>'''Knowledge area:'''</span> Software Engine...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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

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%)