<commit_before>\section{Course program}
	The course is structured into lectures. The lectures take place during the six weeks of the course, but are not necessarily in a one-to-one correspondance with the course weeks. For example, lectures one and two are fairly short and can take place during a single week.

	\subsection{Lecture 1 - logical model of computation}
		The first lecture covers basic concepts of computation from a logical standpoint.

		\paragraph*{Topics}
			\begin{itemize}
				\item Following a path (example: \textit{take three steps forward, turn left, ...});
				\item Following a path with state (example: \textit{read N from the whiteboard, take N steps forward, ...});
				\item Following a path with wrongly typed state (example: \textit{take Monday steps forward, ...});
				\item Following a path with state and conditionals (example: \textit{take N steps forward if the lecturer is smiling, ....}).
			\end{itemize}

		\paragraph*{Activities}
			\begin{itemize}
				\item Let students follow instructions;
				\item Introduce elements of state and let students follow instructions with state (\textit{take N/4 steps forward; N is your age});
				\item Introduce elements of writable state and let students follow instructions with writable state (\textit{take N/4 steps forward; N is written under the yellow sticker});
				\item Introduce elements of decision-making and let students follow instructions with state and decision making (\textit{if the sun is shining, then take N/4 steps forward; otherwise, go sit down});
				\item Introduce elements of iteration and let students follow instructions with state, decision making, and iteration (\textit{divide the students in teams, and let run some script battling for the toy farm}).
			\end{itemize}

			\subsection{Lecture 2 - concrete model of computation}
				The second lecture covers basic concepts of computation from a more concrete perspective in terms of storage and instructions.

				\paragraph*{Topics}
					\begin{itemize}
						\item CPU and memory;
						\item a basic overview of the various things that an imperative language can do, independent of syntax;
						\item introduction to semantics and post-conditions.
					\end{itemize}

				\paragraph*{Activities}
					\begin{itemize}
						\item Formalize the concept of instructions seen in the previous lecture by rewriting the scripts;
						\item Formalize the concept of state and mutation seen in the previous lecture by rewriting the scripts;
						\item Formalize the concept of decision-making seen in the previous lecture by rewriting the scripts;
						\item Formalize the concept of iteration seen in the previous lecture by rewriting the scripts.
					\end{itemize}


			\subsection{Lecture 3 - Hello Python! and variables}
				The third lecture covers an introduction to Python and its concept of variables.

				\paragraph*{Topics}
					\begin{itemize}
						\item brief history of programming languages;
						\item brief introduction to Python: what it does, what it does not, why we have chosen it;
						\item variables in python for integers;
						\item the effect of variable assignment on memory;
					\end{itemize}

			\subsection{Lecture 4 - datatypes, and expressions}
				The fourth lecture covers primitive datatypes and their associated expressions in the Python programming language.

				\paragraph*{Topics}
					\begin{itemize}
						\item what are data-types and \textit{why we do need them}?
						\item different Python data-types;
						\item arithmetic expressions;
						\item integer and floating point operators;
						\item boolean expressions;
						\item conditional expressions;
						\item very long expressions with conditionals vs temporary variables: the art of naming to encode knowledge.
					\end{itemize}

				\paragraph*{Activities}
					Call upon students to solve small riddles related to sample Python scripts on:

					\begin{itemize}
						\item Integers, strings, floats, bools;
						\item Integer, string, float, and bool variables;
						\item Semantics and post-conditions on variable-assignments.
						\item Integers, strings, floats, bool expressions;
						\item Conditional expressions;
						\item Semantics and post-conditions on expressions and conditional expressions.
					\end{itemize}

			\subsection{Lecture 5 - conditional control-flow statements}
				The fifth lecture covers conditional control-flow statements in the Python programming language.

				\paragraph*{Topics}
					\begin{itemize}
						\item making choices;
						\item \texttt{if-then} statements;
						\item \texttt{if-then-else} statements;
						\item the importance of an \texttt{else} statement;
						\item (slightly informal) semantics;
						\item exponential explosion of potential control-paths;
						\item expressive power of \texttt{if-then-else}.
					\end{itemize}

				\paragraph*{Activities}
					Call upon students to solve small riddles related to sample Python scripts on:

					\begin{itemize}
						\item \texttt{if-then} and \texttt{if-then-else} statements;
						\item how many possible final states of a program;
						\item semantics and post-conditions on conditional statements.
					\end{itemize}


			\subsection{Lecture 6 - looping control-flow statements}
				The sixth (and last) lecture covers looping control-flow statements in the Python programming language.

				\paragraph*{Topics}
					\begin{itemize}
						\item repeated behaviors;
						\item \texttt{while} statements;
						\item (slightly informal) semantics;
						\item (more than) exponential explosion of potential control-paths;
						\item expressive power of \texttt{while};
						\item \texttt{for} statements;
						\item (slightly informal) semantics;
						\item \texttt{for} as a \textit{limited} form of \texttt{while}.
					\end{itemize}


				\paragraph*{Activities}
					Call upon students to solve small riddles related to sample Python scripts on:

					\begin{itemize}
						\item \texttt{while} and \texttt{for} loops;
						\item how many possible final states of a program;
						\item semantics and post-conditions on loops.
					\end{itemize}

			\subsection{Lecture 7 - functions}
				The third lecture covers abstraction over (groups of) instructions and statements through functions:

				\paragraph*{Topics}
					\begin{itemize}
						\item Abstraction operations (functions)
						\item The need for functions;
						\item Creating and using functions in Python;
						\item Formal and actual parameters and return;
						\item Brief introduction to: scope (local and global variables) and visibility;
						\item Syntax and semantics;
						\item Introduction to recursion;
					\end{itemize}<commit_msg>Updated course program<commit_after>\section{Course program}
	The course is structured into lectures. The lectures take place during the six weeks of the course, but are not necessarily in a one-to-one correspondance with the course weeks. For example, lectures one and two are fairly short and can take place during a single week.

	\subsection{Lecture 1 - logical model of computation}
		The first lecture covers basic concepts of computation from a logical standpoint.

		\paragraph*{Topics}
			\begin{itemize}
				\item Following a path (example: \textit{take three steps forward, turn left, ...});
				\item Following a path with state (example: \textit{read N from the whiteboard, take N steps forward, ...});
				\item Following a path with wrongly typed state (example: \textit{take Monday steps forward, ...});
				\item Following a path with state and conditionals (example: \textit{take N steps forward if the lecturer is smiling, ....}).
			\end{itemize}

		\paragraph*{Activities}
			\begin{itemize}
				\item Let students follow instructions;
				\item Introduce elements of state and let students follow instructions with state (\textit{take N/4 steps forward; N is your age});
				\item Introduce elements of writable state and let students follow instructions with writable state (\textit{take N/4 steps forward; N is written under the yellow sticker});
				\item Introduce elements of decision-making and let students follow instructions with state and decision making (\textit{if the sun is shining, then take N/4 steps forward; otherwise, go sit down});
				\item Introduce elements of iteration and let students follow instructions with state, decision making, and iteration (\textit{divide the students in teams, and let run some script battling for the toy farm}).
			\end{itemize}

			\subsection{Lecture 2 - concrete model of computation}
				The second lecture covers basic concepts of computation from a more concrete perspective in terms of storage and instructions.

				\paragraph*{Topics}
					\begin{itemize}
						\item CPU and memory;
						\item a basic overview of the various things that an imperative language can do, independent of syntax;
						\item introduction to semantics and post-conditions.
					\end{itemize}

				\paragraph*{Activities}
					\begin{itemize}
						\item Formalize the concept of instructions seen in the previous lecture by rewriting the scripts;
						\item Formalize the concept of state and mutation seen in the previous lecture by rewriting the scripts;
						\item Formalize the concept of decision-making seen in the previous lecture by rewriting the scripts;
						\item Formalize the concept of iteration seen in the previous lecture by rewriting the scripts.
					\end{itemize}


			\subsection{Lecture 3 - Hello Python! and variables}
				The third lecture covers an introduction to Python and its concept of variables.

				\paragraph*{Topics}
					\begin{itemize}
						\item brief history of programming languages;
						\item brief introduction to Python: what it does, what it does not, why we have chosen it;
						\item variables in python for integers;
						\item the effect of variable assignment on memory;
					\end{itemize}

			\subsection{Lecture 4 - datatypes, and expressions}
				The fourth lecture covers primitive datatypes and their associated expressions in the Python programming language.

				\paragraph*{Topics}
					\begin{itemize}
						\item what are data-types and \textit{why we do need them}?
						\item different Python data-types;
						\item arithmetic expressions;
						\item integer and floating point operators;
						\item boolean expressions;
						\item conditional expressions;
						\item very long expressions with conditionals vs temporary variables: the art of naming to encode knowledge.
					\end{itemize}

				\paragraph*{Activities}
					Call upon students to solve small riddles related to sample Python scripts on:

					\begin{itemize}
						\item Integers, strings, floats, bools;
						\item Integer, string, float, and bool variables;
						\item Semantics and post-conditions on variable-assignments.
						\item Integers, strings, floats, bool expressions;
						\item Conditional expressions;
						\item Semantics and post-conditions on expressions and conditional expressions.
					\end{itemize}

			\subsection{Lecture 5 - conditional control-flow statements}
				The fifth lecture covers conditional control-flow statements in the Python programming language.

				\paragraph*{Topics}
					\begin{itemize}
						\item making choices;
						\item \texttt{if-then} statements;
						\item \texttt{if-then-else} statements;
						\item the importance of an \texttt{else} statement;
						\item (slightly informal) semantics;
						\item exponential explosion of potential control-paths;
						\item expressive power of \texttt{if-then-else}.
					\end{itemize}

				\paragraph*{Activities}
					Call upon students to solve small riddles related to sample Python scripts on:

					\begin{itemize}
						\item \texttt{if-then} and \texttt{if-then-else} statements;
						\item how many possible final states of a program;
						\item semantics and post-conditions on conditional statements.
					\end{itemize}


			\subsection{Lecture 6 - looping control-flow statements}
				The sixth lecture covers looping control-flow statements in the Python programming language.

				\paragraph*{Topics}
					\begin{itemize}
						\item repeated behaviors;
						\item \texttt{while} statements;
						\item (slightly informal) semantics;
						\item (more than) exponential explosion of potential control-paths;
						\item expressive power of \texttt{while};
						\item \texttt{for} statements;
						\item (slightly informal) semantics;
						\item \texttt{for} as a \textit{limited} form of \texttt{while}.
					\end{itemize}


				\paragraph*{Activities}
					Call upon students to solve small riddles related to sample Python scripts on:

					\begin{itemize}
						\item \texttt{while} and \texttt{for} loops;
						\item how many possible final states of a program;
						\item semantics and post-conditions on loops.
					\end{itemize}

			\subsection{Lecture 7 - functions}
				The seventh (and last)  lecture covers abstraction over (groups of) instructions and statements through functions:

				\paragraph*{Topics}
					\begin{itemize}
						\item Abstraction operations (functions)
						\item The need for functions;
						\item Creating and using functions in Python;
						\item Formal and actual parameters and return;
						\item Brief introduction to: scope (local and global variables) and visibility;
						\item Syntax and semantics;
						\item Introduction to recursion;
					\end{itemize}
{'fraction_non_alphanumeric': 0.06950839150452992, 'fraction_numerical': 0.0014852220406950838, 'mean_word_length': 3.253632343651295, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5494421', 'n_tokens_mistral': 4314, 'n_tokens_neox': 3303, 'n_words': 1569}