As of yesterday, 46 people have subscribed to the Signal group
Please subscribe to the Signal group as soon as possible
Invitation link to join the group:
https://signal.group/#CjQKICS9Jct3jXhbC2MvbfZ8NWbdDes1cCdcg-ylMGTLBzeEEhBHzCfdCxp6djhSHHrErD2k
Note: I need to approve each request by hand
We will use the GitHub repository of the course for a series of activities, such as exercises and raising issues
Thus, please, create a new account on GitHub: https://github.com/join
You can format the various comments you write in the issue tab on GitHub by using Markdown
Instructions at https://guides.github.com/features/mastering-markdown/
The non-mandatory workshop will be held immediately after the last lecture, where the students are asked to organise themself in groups of 3-4 people (max. score: 4)
Max. score you can obtain from it: 4 points
Date: 21 December 2021, 9:30-12:30, Aula Affreschi (here!) and online if needed
First laboratory lecture on 18 October 2021
Please download in advance:
We will install properly them all together during the first laboratory session
Video of previous lectures:
English mathematicians
English translator of the first article about Babbage's Analytical Engine, written by Luigi Federico Menabrea in French
She enriched the English translation of the article with several annotations
Original article: ~8000 words
Notes by Ada: additional ~19000 words
First mechanical computer programmer: in the article notes, there is a description of how to use the Analytical Engine to calculate the Bernoulli numbers
The operating mechanism can even be thrown into action independently of any object to operate upon (although of course no result could then be developed). Again, it might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine. Supposing, for instance, that the fundamental relations of pitched sounds in the science of harmony and of musical composition were susceptible of such expression and adaptations, the engine might compose elaborate and scientific pieces of music of any degree of complexity or extent.
Science of Operations = Computer Science
What do recipes and instructions for assembling objects have in common?
Shared abstract notion: step-by-step procedure for producing something starting from some initial material we have = algorithm
The word algorithm
is a combination of the Latin word algorismus (that is the Latinization of the name Al-Khwarizmi, who was a great mathematician from Persia in the 8th century) and the Greek word arithmos, meaning number
Each algorithm is written in a specific language which is functional to communicate its instruction to a computer
Computer programmer: anyone that creates algorithms that can be interpreted by any computer
Pseudocode in an informal language that could be interpreted easily by any computer - even if, usually, it is pretty close to a programming language
It is used by computer scientists for sketching an algorithm before to implement it in a particular programming language
Checking if an algorithm can be interpretable by a computer: provide a colleague with pseudocode of the algorithm and ask her to execute it using a particular input, writing down all the passages of the execution on a piece of paper
In this lecture, though, we use a particular graphical alternative to common pseudocode which is good for being understandable by humans: a flowchart
[Our first algorithm] Consider three different strings as input, i.e. two words and a bibliographic entry of a published paper. The algorithm must return: the number 2 if the bibliographic entry contains both words; the number 1 if the bibliographic entry contains only one word; the number 0 otherwise.
E.g.: input "Berners-Lee"
, "web"
and "Tim Berners-Lee: Designing the web for an open society. WWW 2011: 3-4"
; output 2
.
The arrow is used to define the order in which the operations are executed
The flow indicated by the arrows begin in the starting terminal and ends in the ending terminal
It indicates the beginning and ending of an algorithm
It contains a text (usually, either "start" or "end") so as to disambiguate which role has the particular terminal widget in the context of the algorithm
It allows one to specify possible input / output material which is used / returned by the algorithm usually at the beginning or end of its execution
It depicts a conditional operation, where a condition is checked and, depending on the value of some of the variables involved in the algorithm, the execution continues in a particular branch instead of another
Usually, the this operation creates two possible alternative branches: one to be followed whether the condition considered is true, and the other in case the condition is false
Consider two different strings as input, i.e. a words and a bibliographic entry of a published paper, and return 1 if the bibliographic entry contains the word, 0 otherwise
Consider two different strings as input, i.e. a words and a bibliographic entry of a published paper, and return 1 if the bibliographic entry contains the word, 0 otherwise
Consider two different strings as input, i.e. a words and a bibliographic entry of a published paper, and return 1 if the bibliographic entry contains the word, 0 otherwise
Consider two different strings as input, i.e. a words and a bibliographic entry of a published paper, and return 1 if the bibliographic entry contains the word, 0 otherwise
Consider two different strings as input, i.e. a words and a bibliographic entry of a published paper, and return 1 if the bibliographic entry contains the word, 0 otherwise
It is used for expressing (usually one) instruction or operation, that is executed and that can change the current state of some variables used in the algorithm
The text it includes depicts the instruction to execute
Consider three different strings as input, i.e. two words and a bibliographic entry of a published paper. The algorithm must return: the number 2 if the bibliographic entry contains both words; the number 1 if the bibliographic entry contains only one word; the number 0 otherwise
Old-fashioned method: use a piece of paper plus either a pencil or pen - it works, I swear
Modern method: there exists also online tools that allow you to create a flowchart by using an (electronic) computer - e.g. the one that has been used to create all the diagrams in this lecture is called Diagrams.net, which is a free-to-use Web application with a nice graphical user interface