List of commits:
Subject Hash Author Date (UTC)
Added activity diagram. 995cf4f64c43601716f77bb46d1535025ea14d10 aubert@math.cnrs.fr 2020-05-15 14:33:30
Edits in intro, converted an image to a figure for example of class diagram. 1ff4ef2f7f44ece81972a6c77e9f6654c144fcdc aubert@math.cnrs.fr 2020-05-14 22:12:38
Adding example file, to test installation. 5ed35e64a4e4dc60c888358bde54594999aab34d aubert@math.cnrs.fr 2020-05-13 19:03:41
Minor adjustments to the syllabus. dca6f12d9d3d561755991029f2d53bf9823a8cea aubert@math.cnrs.fr 2020-05-13 19:02:41
Worked on reverse-engineering section. 34aeba178fe553c08b4fb3738523be293704e09d aubert@math.cnrs.fr 2020-05-13 18:52:09
Cleaning images. ac02dcf8ffbbbd24139491e5d1e349ace782401e aubert@math.cnrs.fr 2020-05-13 17:40:43
Started to spell-check… 799dc31237aa41176687f37306ca4092a7760f89 aubert@math.cnrs.fr 2020-05-13 17:17:06
Added foldable toc to readme and co. 07854a4e108c91c55a40fbd10ed84336b885b93f aubert@math.cnrs.fr 2020-05-13 16:51:17
Added final exam. fb37cf99312795016ddbc2e859b055051bcedd13 aubert@math.cnrs.fr 2020-05-08 21:11:57
Refined ccs style + added foldable toc. 95b1663a7b8294dd401d796fb545a67bddba0a01 aubert@math.cnrs.fr 2020-05-07 19:02:27
Refined ccs style + added foldable toc. c208eee4f769e99415efa57a7f03081db87ec3db aubert@math.cnrs.fr 2020-05-07 18:02:53
Fixing indent in xml and notes. ace8f38f8e0374005d143ebaa32d47a209fb5a48 aubert@math.cnrs.fr 2020-04-27 18:42:28
NoSQL application detailled. f2030de09eb58462e04935ec83c71d3c1fc72469 aubert@math.cnrs.fr 2020-04-27 18:28:02
Added automatic anchors. 2ddb93394121bcf95f91bfed8b447966925afa6f aubert@math.cnrs.fr 2020-04-27 05:35:14
added missing file 480b503949518eb51fd324a6f6bbb8f6d5643f0d aubert@math.cnrs.fr 2020-04-24 02:11:09
Worked on MongoDB section. 70f041d53a14bbb5ace0a4ef40f3e67eca285309 aubert@math.cnrs.fr 2020-04-22 19:18:55
Edited KNOWN_BUGS. b90ca71b498016b17963373ead24873781181bfd aubert@math.cnrs.fr 2020-04-22 05:12:14
Minor edits on narrative. d927955c1269ff1b110057577e50705fd41f4e2d aubert@math.cnrs.fr 2020-04-22 05:07:48
Worked on migrating code to snippets. 1ce6f6ba150a1cace57445330801e8b17f6c3044 aubert@math.cnrs.fr 2020-04-22 04:15:37
Edited Sol of 4.28, Pb and Sol of 4.29, checked Pb 4.30, edited Pb 4.31, edited the DB Applications Resources section, checked Pb 5.1, edited Pb 5.2 and Sol 5.2, Pb and Sol of 6.1, Pb 7.1, checked Pb 7.2, edited Sol 7.2, Pb and Sol of Pb 7.3, checked Ex 7.1 and edited its solution, checked Ex 7.2 and edited its solution, edited Ex and Sol of 7.3, Ex and Sol of 7.4 edited Ex 7.5 and checked its solution, edited Ex and Sol of 6.1, Ex and Sol of 6.2, checked Ex 6.3 and edited its solution, checked Ex 5.1 and edited its solution, checked Ex 5.2 and edited its solution, edited Ex and Sol of 5.3, checked Ex and Sol of 5.4, checked Ex 5.5 and edited its solution, and edited Ex and Sol of 5.6. 6580a85df655eddd149bb5531a0615ddfe9f810e Crystal 2020-04-22 03:02:20
Commit 995cf4f64c43601716f77bb46d1535025ea14d10 - Added activity diagram.
Author: aubert@math.cnrs.fr
Author date (UTC): 2020-05-15 14:33
Committer name: aubert@math.cnrs.fr
Committer date (UTC): 2020-05-15 14:33
Parent(s): 1ff4ef2f7f44ece81972a6c77e9f6654c144fcdc
Signer:
Signing key:
Signing status: N
Tree: 5cf23837d1208b83789261ebf80db3c135ed3a3e
File Lines added Lines deleted
notes/Makefile 2 2
notes/fig/uml_activity/teaching.tex 35 0
notes/fig/uml_activity/template.def 13 0
notes/fig/uml_class/car_info.tex 0 0
notes/fig/uml_class/driver.tex 0 0
notes/fig/uml_class/flight_01.tex 0 0
notes/fig/uml_class/flight_02.tex 0 0
notes/fig/uml_class/generalization.tex 0 0
notes/fig/uml_class/hand.tex 0 0
notes/fig/uml_class/rectangle.tex 0 0
notes/fig/uml_class/template.def 0 0
notes/lectures_notes.md 9 9
File notes/Makefile changed (mode: 100644) (index 0ed1e7b..8a27204)
... ... pdf: lectures_notes.md
78 78 ### ###
79 79
80 80 example: example.md example: example.md
81 latexmk -silent -cd -pdf fig/er/abstract.tex fig/fd/course.tex fig/misc/schema_design.tex fig/rel_mod/actor.tex fig/uml/hand.tex
81 latexmk -silent -cd -pdf fig/er/abstract.tex fig/fd/course.tex fig/misc/schema_design.tex fig/rel_mod/actor.tex fig/uml_class/hand.tex
82 82 pdf2svg fig/er/abstract.pdf fig/er/abstract.svg pdf2svg fig/er/abstract.pdf fig/er/abstract.svg
83 83 pdf2svg fig/fd/course.pdf fig/fd/course.svg pdf2svg fig/fd/course.pdf fig/fd/course.svg
84 84 pdf2svg fig/misc/schema_design.pdf fig/misc/schema_design.svg pdf2svg fig/misc/schema_design.pdf fig/misc/schema_design.svg
85 85 pdf2svg fig/rel_mod/actor.pdf fig/rel_mod/actor.svg pdf2svg fig/rel_mod/actor.pdf fig/rel_mod/actor.svg
86 pdf2svg fig/uml/hand.pdf fig/uml/hand.svg
86 pdf2svg fig/uml_class/hand.pdf fig/uml_class/hand.svg
87 87 pandoc $(OPTIONSPANDOCHTML) -o example.html $< pandoc $(OPTIONSPANDOCHTML) -o example.html $<
88 88 pandoc $(OPTIONSPANDOCODT) -o example.odt $< pandoc $(OPTIONSPANDOCODT) -o example.odt $<
89 89 pandoc $(OPTIONSPANDOCPDF) -o example.pdf $< pandoc $(OPTIONSPANDOCPDF) -o example.pdf $<
File notes/fig/uml_activity/teaching.tex added (mode: 100644) (index 0000000..fa4f2c2)
1 \documentclass[border=20pt]{standalone}
2 \input{template.def}
3 \begin{tikzpicture}[node distance=1.5cm]
4 % Frame
5 \draw [rounded corners] (-4,-1.5) rectangle (7, -8.5);
6 \node (title) at (5.2, -2) {\textbf{Teaching a class}};
7
8 % Nodes
9 \node[initial] (initial) at (0,-1) {};
10 \node[action, below of = initial] (ask) {Ask for questions};
11 \node[decision, below of= ask] (decision1) {};
12 \node[action, below left = 1cm and 1cm of decision1] (answer) {Answer question};
13 \node[action, right = 2.3cm of decision1] (intro) {Introduce class};
14 \node[decision, below of=intro] (decision2) {};
15 \node[action, below left = 1cm and 1cm of decision2] (quiz) {Distribute quiz};
16 \node[action, below right = 1cm and 1cm of decision2] (class) {Start class};
17
18 % Arrow
19 \draw [arrow] (initial) -- (ask);
20 \draw [arrow] (ask) -- (decision1);
21 \draw [arrow] (decision1) -- node[above, pos=1pt]{[Question]} ++(-2cm, 0) -| (answer);
22 \draw [arrow] (answer) -- ++(2cm, 0) -| (decision1);
23 \draw [arrow] (decision1) -- node[above, pos=.4pt]{[No question]} (intro);
24 \draw [arrow] (intro) -- (decision2);
25 \draw [arrow] (decision2) -- node[above, pos=1pt]{[Quiz]} ++(-2cm, 0) -| (quiz);
26 \draw [arrow] (decision2) -- node[above, pos=.7pt]{[No quiz]} ++(2cm, 0) -| (class);
27
28 % Etc.
29 \draw[thick] (quiz) -- ++(0, -1);
30 \draw[dotted, thick] ($ (quiz)+(0,-1)$) -- ++(0, -.33);
31 \draw[thick] (class) -- ++(0, -1);
32 \draw[dotted, thick] ($ (class)+(0,-1)$) -- ++(0, -.33);
33 \end{tikzpicture}
34 \end{document}
35
File notes/fig/uml_activity/template.def added (mode: 100644) (index 0000000..df19e15)
1 \renewcommand\familydefault{\sfdefault} % Default family: serif
2 \usepackage{tikz}
3 \usetikzlibrary{calc}
4 \usetikzlibrary{shapes.geometric}
5 \usetikzlibrary{arrows.meta,arrows}
6 \usetikzlibrary{positioning}
7 \tikzset{
8 initial/.style={circle, fill},
9 decision/.style={diamond, black, draw},
10 action/.style={rectangle, draw, rounded corners},
11 arrow/.style={draw, -{Latex[length=3mm]}, thick}
12 }
13 \begin{document}
File notes/fig/uml_class/car_info.tex renamed from notes/fig/uml/car_info.tex (similarity 100%)
File notes/fig/uml_class/driver.tex renamed from notes/fig/uml/driver.tex (similarity 100%)
File notes/fig/uml_class/flight_01.tex renamed from notes/fig/uml/flight_01.tex (similarity 100%)
File notes/fig/uml_class/flight_02.tex renamed from notes/fig/uml/flight_02.tex (similarity 100%)
File notes/fig/uml_class/generalization.tex renamed from notes/fig/uml/generalization.tex (similarity 100%)
File notes/fig/uml_class/hand.tex renamed from notes/fig/uml/hand.tex (similarity 100%)
File notes/fig/uml_class/rectangle.tex renamed from notes/fig/uml/rectangle.tex (similarity 100%)
File notes/fig/uml_class/template.def renamed from notes/fig/uml/template.def (similarity 100%)
File notes/lectures_notes.md changed (mode: 100644) (index 2974fcf..d3715ff)
... ... Wide, powerful, but also intimidating.
5807 5807
5808 5808 You know UML from object-oriented programming language: You know UML from object-oriented programming language:
5809 5809
5810 ![](fig/uml/rectangle)
5810 ![](fig/uml_class/rectangle)
5811 5811
5812 That is an example of a class diagram (with class name, attributes and operators, as well as a particular way to represent that a class extends another), there are other types of diagrams, they are not unrelated!
5812 That is an example of a class diagram (with class name, attributes and operators, as well as a particular way to represent that a class extends another) , there are other types of diagrams, they are not unrelated!
5813 5813 For instance, using communication diagrams, deployment diagrams, and state chart diagrams, you can collect the requirements needed to draw a class diagram! For instance, using communication diagrams, deployment diagrams, and state chart diagrams, you can collect the requirements needed to draw a class diagram!
5814 5814 They each offer a viewpoint on a software that will help you in making sure the various pieces will fit together: it is a tool commonly used in software engineering, and useful in database design. They each offer a viewpoint on a software that will help you in making sure the various pieces will fit together: it is a tool commonly used in software engineering, and useful in database design.
5815 5815
 
... ... They describe the behavioral, or dynamic, relationship, between components.
5843 5843 - **State machine diagram**, a.k.a., state chart diagram, describes how a system react to external events. You can picture yourself a complex form of finite state automata diagram. - **State machine diagram**, a.k.a., state chart diagram, describes how a system react to external events. You can picture yourself a complex form of finite state automata diagram.
5844 5844 - **Activity diagram** is a flow of control between activities. You may have seen them already, they are supposedly easy to follow: - **Activity diagram** is a flow of control between activities. You may have seen them already, they are supposedly easy to follow:
5845 5845
5846 ![Activity Diagram Quiz Example](img/activity_diagram.png)
5846 ![Activity Diagram Quiz Example](fig/uml_activity/teaching)
5847 5847
5848 5848 Then there is the sub-category of "Interaction diagrams": Then there is the sub-category of "Interaction diagrams":
5849 5849
 
... ... Exercise +.#
6224 6224 ~ ~
6225 6225 Consider the following diagram: Consider the following diagram:
6226 6226
6227 ![](fig/uml/flight_01)
6227 ![](fig/uml_class/flight_01)
6228 6228
6229 6229 Give the number of attributes for both classes, and suggest two operations for the class that does not have any. Discuss the multiplicities: why did the designer picked those values? Give the number of attributes for both classes, and suggest two operations for the class that does not have any. Discuss the multiplicities: why did the designer picked those values?
6230 6230
 
... ... Solution +.#
6566 6566 As far as we know "hand" could refer to a card game, and "person" could refer to players. As far as we know "hand" could refer to a card game, and "person" could refer to players.
6567 6567 A straightforward representation of the same diagram as a UML class diagram could be: A straightforward representation of the same diagram as a UML class diagram could be:
6568 6568
6569 ![](fig/uml/hand)
6569 ![](fig/uml_class/hand)
6570 6570
6571 6571 Note that we could convey more information, for instance by using aggregation, or even composition, but, without more information about those entities and this relationship, it may be safer not to make any additional supposition. Note that we could convey more information, for instance by using aggregation, or even composition, but, without more information about those entities and this relationship, it may be safer not to make any additional supposition.
6572 6572
 
... ... Solution +.#
6578 6578 Composition association: class does not exist without the association. Composition association: class does not exist without the association.
6579 6579
6580 6580 Solution +.# Solution +.#
6581 ~ ![](fig/uml/generalization)
6581 ~ ![](fig/uml_class/generalization)
6582 6582 Because it avoids redundancy. Because it avoids redundancy.
6583 6583
6584 6584
6585 6585 Solution +.# Solution +.#
6586 ~ ![](fig/uml/flight_02)
6586 ~ ![](fig/uml_class/flight_02)
6587 6587
6588 6588
6589 6589 ## Problems {-} ## Problems {-}
 
... ... Problem (From UML to relational model -- DRIVER) +.#UMLtoRELDriver
7223 7223 Consider the UML diagram below, and convert it to the relational model. Consider the UML diagram below, and convert it to the relational model.
7224 7224 Do not forget to indicate primary and foreign keys. Do not forget to indicate primary and foreign keys.
7225 7225
7226 ![](fig/uml/driver)
7226 ![](fig/uml_class/driver)
7227 7227
7228 7228
7229 7229 ## Solutions to Selected Problems {-} ## Solutions to Selected Problems {-}
 
... ... Solution to [%D %n (%T)](#problem:carinfo)
7571 7571
7572 7572 Note that, during the coversion, we had to make Insured Car part of the primary key of CAR INSURANCE. Note that, during the coversion, we had to make Insured Car part of the primary key of CAR INSURANCE.
7573 7573
7574 ![](fig/uml/car_info)
7574 ![](fig/uml_class/car_info)
7575 7575
7576 7576 --- ---
7577 7577
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/caubert/CSCI_3410

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/caubert/CSCI_3410

Clone this repository using git:
git clone git://git.rocketgit.com/user/caubert/CSCI_3410

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main