0
PROGRAMMING FUNDAMENTALS 2
Introduction
CHAPTER
[Link]
How is the lecture organised?
Organisation
Tuesday Thursday Friday
Classes are scheduled on Tuesday between 8:00 and 9:30. Practical labs are scheduled in two
groups, one group on Thursday between 8:00 and 9:30, and the second group on Friday between 9:45
and 11:15. Benjamin JAHIC and Antonio FISCARELLI are in charge of the lab sessions.
9:45-11:15
8:00-9:30
8:00-9:30
Class Lab Lab
Organisation
Tuesday Thursday
The very first lab session, in the first week of the semester, is scheduled on Thursday Feb 22, from
8:00 to 9:30. The two groups will be defined in this session.
8:00-9:30
8:00-9:30
Class Lab
Organisation in the First Week
The final evaluation is composed of two parts: a practical mid-term exam, counting for 40% of the final
mark, plus a written exam counting for the remaining 60%.
practical
40 % mid-term
exam
written 60 %
exam
Evaluation
Let’s begin with a short motivation. What’s the objective of this lecture? Why should you care (aside
from simply trying to pass)?
Motivation
Here’s the official course description …
Building upon the basic skills acquired in Programming
Fundamentals 1, this course covers the object-oriented
programming paradigm, both at a theoretical as well as at
a practical level.
Students will learn the fundamental concepts of object-
orientation, and how to apply them for designing and
implementing applications of average complexity.
The Official Course Description
We will follow a hands-on approach, mixing theoretical concepts discussed during the lectures with
many live examples as part of the classes—actually very similar to learning a spoken language.
Hands-On Approach
There are many object-oriented programming languages. Some popular examples, in alphabetical
order, include C#, Java, Python and Swift.
An extremely small subset of popular
Object-Oriented Languages
In this class, we will mainly focus on Python and Swift, while including examples from some other
&
languages for illustration purposes.
Main Focus in this Lecture
As of February 2018, according to the PYPL Popularity of Programming Language index, Python is
ranked the second most popular language, only by a very small margin compared to the top: Java.
Swift can be found “only” on rank 9. However, compared to its short history, Swift appears to be a
noteworthy contender of some pretty well-known and prevalent languages.
Please note PYPL takes Google Trends as its primary source. After all, the information should not be
considered authoritative.
Some important resources relevant for the entire course. Please pay attention to additional resources
given in individual chapters.
Resources
A Scrapbook is employed to publish the entire material of this lecture, available at the address shown.
It will particularly contain all examples discussed in the class, in a commented form. Additional links
are included for reference purposes and further study.
[Link]
When it comes to object-oriented concepts, which represents a major ingredient of this lecture, many
books are available. Object-Oriented Analysis and Design with Applications can be highly
recommended. However, please note that this book covers quite a bit more ground than what we will
be able to discuss in this class.
Object-Oriented Analysis and Design with Applications,
3rd edition, Grady Booch et al., Addison-Wesley,
ISBN 978-0201895513
Your BUL library card gives you access to quite a number of resources. One entry-point to get access
to those resources is via the [Link] portal. This includes, but of course is not limited to, a large set of e-
books.
Many Resources available via BUL Library Card
You may want to check out the online version of this book on Safari ProQuest: http://
[Link]/9780201895513.
E-book available free of charge on Safari ProQuest
Touch of Class is an excellent book about object-orientation. Its author, Bertrand Meyer, is the designer
of the Eiffel programming language. One of the central concepts is known as design by contract. The
primary goal is to increase the reliability of software right from the start, already in the early software
development phases. Although the Eiffel language is very interesting and important from an academic
point of view, its commercial impact is rather low.
Touch of Class: Learning to Program Well with Objects
and Contracts, 1st edition, Bertrand Meyer, Springer,
ISBN 978-3540921448
This title is available from Springer Link: [Link]
10.1007%2F978-3-540-92145-5.
E-book available free of charge on Springer Link
Here’s a book from the Head First series, covering object-orientation. According to its synopsis, “the
authors have made the content of OOAD accessible, usable for the practitioner”.
Head First Object-Oriented Analysis and Design, Brett
McLaughlin et al., O'Reilly Media, ISBN 978-0596008673
This book is also available from Safari ProQuest: http://
[Link]/0596008678.
E-book available free of charge on Safari ProQuest
Some resources for Python …
The official Python Website represents a very good starting point for learning the Python programming
language.
[Link]
Python is available on a large variety of platform, including, but not limited to, Linux, macOS and
Windows.
[Link]
PyCharm is an excellent IDE for Python. The community edition is available free of charge for Linux,
macOS and Windows.
[Link]
Learning Python provides a comprehensive introduction to the Python programming language. The
book is available electronically from Safari ProQuest: http://
[Link]/9781449355722.
E-book available free of charge on Safari ProQuest
Python in a Nutshell, more tailored for those who already have some experience in Python, is as well
available from Safari ProQuest: [Link]
9781491913833.
E-book available free of charge on Safari ProQuest
Some resources for Swift …
[Link] in turn provides many resources related to the Swift programming language.
[Link]
On macOS, Xcode provides extensive support for Swift development. Xcode is available free of charge
from the App Store.
The Swift playgrounds we will use throughout the classes will also work on iPad …
… allowing to interactively play with the code examples.
Swift development snapshots are available for download on [Link]. Jetbrains offers dedicated
support for Swift via a plugin for their CLion IDE.
Linux
A preconfigured VirtualBox image of an Ubuntu-Linux is available for download from the Moodle
course page. You’ll find the following software preinstalled: the Swift Development Snapshot, CLion
with Swift plugin, the Python runtime, and the PyCharm IDE. Please note you need an active VPN
connection to be able to access the Jetbrains license server for running CLion and PyCharm.
Ubuntu VirtualBox Image
As for the official documentation, The Swift Programming Language is available online here: https://
[Link]/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/
[Link].
The Swift Programming Language
The same title is also available from within iBooks: [Link]
programming-language/id881256329?mt=11.
The Swift Programming Language