Original: Turning Software Engineers into Machine Learning Engineers
Revised: Turning Software Engineers into Machine Learning Engineers

Original: Abstract
Revised: Abstract

Original: A ﬁrst challenge in teaching machine learning to software engineering and computer science students consists of changing the methodology from a constructive design-ﬁrst perspective to an empirical one, focusing on proper experimental work.
Revised: A ﬁrst challenge in teaching machine learning to software engineering and computer science students consists of changing the methodology from a constructive design-ﬁrst perspective to an empirical one, focusing on proper experimental work.

Original: On the other hand, students nowadays can make signiﬁcant progress using existing scripts and powerful (deep) learning frameworks – focusing on established use cases such as vision tasks.
Revised: On the other hand, students nowadays can make signiﬁcant progress using existing scripts and powerful (deep) learning frameworks – focusing on established use cases such as vision tasks.

Original: To tackle problems in novel application domains, a clean methodological style is indispensable.
Revised: To tackle problems in novel application domains, a clean methodological style is indispensable.

Original: Additionally, for deep learning, familiarity with gradient dynamics is crucial to understand deeper models.
Revised: Additionally, for deep learning, familiarity with gradient dynamics is crucial to understand deeper models.

Original: Consequently, we present three exercises that build upon each other to achieve these goals.
Revised: Consequently, we present three exercises that build upon each other to achieve these goals.

Original: These exercises are validated experimentally in a master’s level course for software engineers.
Revised: These exercises are validated experimentally in a master’s level course for software engineers.

Original: 1. Teaching Basic Machine Learning
Revised: 1. Teaching Basic Machine Learning

Original: The current state of the art of and popular interest in machine learning (esp.
Revised: The current state of the art of and popular interest in machine learning (esp.

Original: deep learning) is remarkable.
Revised: deep learning) is remarkable.

Original: There are numerous blogs, tutorials, online-classes and code snippets that allow for very fast prototyping and experimentation.
Revised: There are numerous blogs, tutorials, online-classes and code snippets that allow for very fast prototyping and experimentation.

Original: Endeavors such as ﬁne-tuning a pre-trained image classiﬁcation network for a special application domain have become beginner tutorials (Chilamkurthy, 2017).
Revised: Endeavors such as ﬁne-tuning a pre-trained image classiﬁcation network for a special application domain have become beginner tutorials (Chilamkurthy, 2017).

Original: While we believe that all of these resources are valuable to get students motivated and excited about the ﬁeld, we also noted them as potential obstacles in acquiring basic machine learning principles that are needed for practitioners keen on applying ML to their domain of choice.
Revised: While we believe that all of these resources are valuable to get students motivated and excited about the ﬁeld, we also noted them as potential obstacles in acquiring basic machine learning principles that are needed for practitioners keen on applying ML to their domain of choice.

Original: We noted that especially computer science and software engineering students tended to struggle with the adoption of an empirical mindset rather than a constructive one.
Revised: We noted that especially computer science and software engineering students tended to struggle with the adoption of an empirical mindset rather than a constructive one.

Original: That is, instead of designing an ML model in terms of its hyperparameters (e.g., layers, network architecture, etc.)
Revised: That is, instead of designing an ML model in terms of its hyper- parameters (e.g., layers, network architecture, etc.)

Original: like one would do for, say, a UML class diagram, we need to rely on a systematic approach to experimental determination.
Revised: like one would do for, say, a UML class diagram, we need to rely on a systematic approach to experimental determination.

Original: That involves proper protocols of experiments, investigation of the learning rates (on train/val sets), or inspection of gradient developments.
Revised: That involves proper protocols of experiments, investigation of the learning rates (on train/val sets), or inspection of gradient developments.

Original: To the novice in ML, it might thus be overwhelming to deal with both new algorithms, models, and techniques as well as whole new development style, i.e., adopting an experimental methodology.
Revised: To the novice in ML, it might thus be overwhelming to deal with both new algorithms, models, and techniques as well as whole new development style, i.e., adopting an experimental methodology.

Original: What should be treated as a black box?
Revised: What should be treated as a black box?

Original: What should be understood in more detail?
Revised: What should be understood in more detail?

Original: This can be exacerbated by the teachers’ emphasis on the former, due to available material and individual curiosity.
Revised: This can be exacerbated by the teachers’ emphasis on the former, due to available material and individual curiosity.

Original: For instance, numerical optimizers (that offer interfaces to inject gradients) beyond stochastic gradient descent typically need no reimplementation and can be used off the shelf.
Revised: For instance, numerical optimizers (that offer interfaces to inject gradients) beyond stochastic gradient descent typically need no reimplementation and can be used off the shelf.

Original: Knowledge about gradient dynamics, on the other hand, is particularly valuable in terms of diagnosing vanishing/exploding gradient problems that can help to improve training by, e.g., clipping gradients or adding batch-norm layers.
Revised: Knowledge about gradient dynamics, on the other hand, is particularly valuable in terms of diagnosing vanishing/exploding gradient problems that can help to improve training by, e.g., clipping gradients or adding batch-norm layers.

Original: Understanding this core material paves the way for more elaborate models such as autoencoders or GANs.
Revised: Understanding this core material paves the way for more elaborate models such as autoencoders or GANs.

Original: 2. Practising Essential Machine Learning Skills
Revised: 2. Practising Essential Machine Learning Skills

Original: The variety of available material and code for ML applications and especially powerful frameworks allow us to quickly build impressive models.
Revised: The variety of available material and code for ML applications and especially powerful frameworks allow us to quickly build impressive models.

Original: However, to get efﬁciently meaningful models, it is advisable not to rely completely on libraries and frameworks.
Revised: However, to get efﬁciently meaningful models, it is advisable not to rely completely on libraries and frameworks.

Original: We have identiﬁed three fundamental skills an ML engineer should acquire for it and propose exercises for software engineering students to enhance them 1 .
Revised: We have identiﬁed three fundamental skills an ML engineer should acquire for it and propose exercises for software engineering students to enhance them 1 .

Original: The ﬁrst skill is a systematic methodology for hyperparameter tuning, as ML users typically train plenty of models with various architectures in order to ﬁnd the one (together with its corresponding hyperparameters) best performing the desired task.
Revised: The ﬁrst skill is a systematic methodology for hyperparameter tuning, as ML users typically train plenty of models with various architectures in order to ﬁnd the one (together with its corresponding hyperparameters) best performing the desired task.

Original: Secondly, ML engineers should know how to perform proper data splitting and the correct usage of the resulting subsets, as this determines the validity of the model.
Revised: Secondly, ML engineers should know how to perform proper data splitting and the correct usage of the resulting subsets, as this determines the validity of the model.

Original: This is not trivial in practice, for instance, for time series data with recurring patterns of different temporal horizons.
Revised: This is not trivial in practice, for instance, for time series data with recurring patterns of different temporal horizons.

Original: When applying numerical optimizers for training, gradient problems can occur, especially with advanced or customized algorithms.
Revised: When applying numerical optimizers for training, gradient problems can occur, especially with advanced or customized algorithms.

Original: In order to be able to detect and improve them, it is essential to understand the gradient signals, which we have identiﬁed as the third skill.
Revised: In order to be able to detect and improve them, it is essential to understand the gradient signals, which we have identiﬁed as the third skill.

Original: This can be the preparation to work with advanced visualization toolkits like TensorBoard 2 to get more insight into the model’s dynamics.
Revised: This can be the preparation to work with advanced visualization toolkits like TensorBoard 2 to get more insight into the model’s dynamics.

Original: 2.1. Introducing Hyperparameter Tuning
Revised: 2.1. Introducing Hyperparameter Tuning

Original: During their education, software engineers are typically taught a constructive operational mode, i.e. creating wellconsidered architectural and design models before implementing their software.
Revised: During their education, software engineers are typically taught a constructive operational mode, i.e. creating wellconsidered architectural and design models before implementing their software.

Original: By contrast, the task of tuning hyperparameters for ML models needs a more experimental approach.
Revised: By contrast, the task of tuning hyperparameters for ML models needs a more experimental approach.

Original: While there exist empirical guidelines and research ﬁndings that point to promising regions  of the hyperparameter space, an ML engineer still has to explore these regions in greater detail.
Revised: While there exist empirical guidelines and research ﬁndings that point to promising regions or directions of the hyperparameter space, an ML engineer still has to explore these regions in greater detail.

Original: Considering an underﬁtting neural network as a simple example: it is well known that increasing the complexity of the model by adding more neurons or layers or decreasing the regularization will yield better performance.
Revised: Considering an underﬁtting neural network as a simple example: it is well known that increasing the complexity of the model by adding more neurons or layers or decreasing the regularization will yield better performance.

Original: However, ﬁnding the optimal number of neurons and layers requires systematic exploration, e.g. using common automatic hyperparameter optimization algorithms like Grid or Random Search.
Revised: However, ﬁnding the optimal number of neurons and layers requires systematic exploration, e.g. using common automatic hyperparameter optimization algorithms like Grid or Random Search.

Original: This union of methodical and explorative approach for hyperparameter tuning is new to software engineers and an important aspect of the tasks of an ML engineer, so it needs to be practiced.
Revised: This union of methodical and explorative approach for hyperparameter tuning is new to software engineers and an important aspect of the tasks of an ML engineer, so it needs to be practiced.

Original: Therefore, we designed an exercise for our students focusing on tuning the probably most important hyperparameter (Goodfellow et al., 2016; Smith, 2017) for an exemplifying simple regression problem trained with gradient descent: the learning rate of the optimization algorithm.
Revised: Therefore, we designed an exercise for our students focusing on tuning the probably most important hyperparameter (Goodfellow et al., 2016; Smith, 2017) for an exemplifying simple regression problem trained with gradient descent: the learning rate of the optimization algorithm.

Original: We chose linear regression as the ﬁrst model due to its simplicity as the model itself has no hyperparameters.
Revised: We chose linear regression as the ﬁrst model due to its simplicity as the model itself has no hyperparameters.

Original: The data set consists of eight two-dimensional data points ( x, y ) sampled from an unknown, linear curve, alternatively with or without noise in the y -values.
Revised: The data set consists of eight two-dimensional data points ( x, y ) sampled from an unknown, linear curve, alternatively with or without noise in the y -values.

Original: We designed a widget visualizing the data points, the current linear model ˆ y ( x ) =
Revised: We designed a widget visualizing the data points, the current linear model ˆ y ( x ) =

Original: w 0 + w 1 x trying to ﬁt the samples, the corresponding current values of the weights w 0 and w 1 and the resulting current loss L ( y, ˆ y ) of the model, see Figure 1.
Revised: w 0 + w 1 x trying to ﬁt the samples, the corresponding current values of the weights w 0 and w 1 and the resulting current loss L ( y, ˆ y ) of the model, see Figure 1.

Original: The linear function can be ﬁtted in three different ways:
Revised: The linear function can be ﬁtted in three different ways:

Original: Adjusting the weights manually using the sliders at the bottom of the widget.
Revised: Adjusting the weights manually using the sliders at the bottom of the widget.

Original: This is a good starting point to get familiar with the widget and an intuition of suitable weights of the linear function.
Revised: This is a good starting point to get familiar with the widget and an intuition of suitable weights of the linear function.

Original: Gradually training the weights using gradient descent step by step (button Gradient step ) orrepeatedly until a self-speciﬁed stopping criterion is met (button
Revised: Gradually training the weights using gradient descent step by step (button Gradient step ) or

Original: https:
Revised: repeatedly until a self-speciﬁed stopping criterion is met (button

Original: Solve by gradient descent ).
Revised: Solve by gradient descent ).

Original: In this mode, the students can experiment with different values of the learning rate and see the effects on the model.
Revised: In this mode, the students can experiment with different values of the learning rate and see the effects on the model.

Original: The calculated derivatives of the loss by the weights provide an idea of appropriate values of the learning rate
Revised: The calculated derivatives of the loss by the weights provide an idea of appropriate values of the learning rate.

Original: Determining the optimal weights analytically using the normal equations (button Solve by normal equations ).
Revised: Determining the optimal weights analytically using the normal equations (button Solve by normal equations ) based on the pseudo-inverse matrix (Goodfellow et al., 2016).

Original: This allows on the one hand to check the correctness of the students’ gradient calculations and on the other hand to point out the difference be- tween analytical and numerical solution methods.
Revised: This allows on the one hand to check the correctness of the students’ gradient calculations and on the other hand to point out the difference between analytical and numerical solution methods.

Original: The button Show secret displays the actual weights of the original, true linear function and can show that not even the  normal equations can correctly determine the original weights when considering noisy data.
Revised: The button Show secret displays the actual weights of the original, true linear function and can show that not even the analytical normal equations can correctly determine the original weights when considering noisy data.

Original: 2.2. Manage Proper Data Splitting
Revised: 2.2. Manage Proper Data Splitting

Original: However, by now the students only learned to tune a hyperparameter of the optimization algorithm, i.e. the learning rate.
Revised: However, by now the students only learned to tune a hyperparameter of the optimization algorithm, i.e. the learning rate.

Original: To actually tune model hyperparameters, splitting up the data set in training and validation sets is necessary.
Revised: To actually tune model hyperparameters, splitting up the data set in training and validation sets is necessary.

Original: As commonly known, the training set is used to train various models which are afterward evaluated on the unseen instances of the validation set.
Revised: As commonly known, the training set is used to train various models which are afterward evaluated on the unseen instances of the validation set.

Original: After choosing the best model, a second holdout set, the test set, gives an approximation of how well the model will perform on new instances in production.
Revised: After choosing the best model, a second holdout set, the test set, gives an approximation of how well the model will perform on new instances in production.

Original: To obtain meaningful and comparable results, the individual subsets must be both representative for the whole data set and not be modiﬁed during the tuning process.
Revised: To obtain meaningful and comparable results, the individual subsets must be both representative for the whole data set and not be modiﬁed during the tuning process.

Original: The second exercise shall teach the students how to split a data set properly according to meaningfulness and reproducibility and how to choose the best model hyperparameters based on these subsets.
Revised: The second exercise shall teach the students how to split a data set properly according to meaningfulness and reproducibility and how to choose the best model hyperparameters based on these subsets.

Original: Specifically, they have to ﬁnd the optimal polynomial degree to ﬁt a given non-polynomial function.
Revised: Specifically, they have to ﬁnd the optimal polynomial degree to ﬁt a given non-polynomial function.

Original: The instances ( x, y ) are (for presentation reasons) again twodimensional and sampled from a trigonometry-based function y ( x ) =
Revised: The instances ( x, y ) are (for presentation reasons) again twodimensional and sampled from a trigonometry-based function y ( x ) =

Original: ( x − 1) sin( x + 2) + N (0 , 1 . 5) with normal distributed noise, as displayed in Figure 2.
Revised: ( x − 1) sin( x + 2) + N (0 , 1 . 5) with normal distributed noise, as displayed in Figure 2.

Original: As the students are already familiar with linear regression, we keep it up for this exercise and add model hyperparameters using polynomial basis functions [ x 2 , x 3 , ..., x n ] to simulate polynomial regression instead of introducing this new model.
Revised: As the students are already familiar with linear regression, we keep it up for this exercise and add model hyperparameters using polynomial basis functions [ x 2 , x 3 , ..., x n ] to simulate polynomial regression instead of introducing this new model.

Original: At ﬁrst, they need to split up the instances properly (as explained above) into the three sets.
Revised: At ﬁrst, they need to split up the instances properly (as explained above) into the three sets.

Original: Based on the current polynomial degree k = 1 , ..., n , the originally scalar input x ∈ R needs to be extended to a vector h ( x ) =
Revised: Based on the current polynomial degree k = 1 , ..., n , the originally scalar input x ∈ R needs to be extended to a vector h ( x ) =

Original: [ x, x 2 , x 3 , ..., x k ] T ∈ R k by adding powers of x as new features such that the vectors can be fed into thelinear regressor ˆ y (cid:0) h ( x ) (cid:1) =
Revised: [ x, x 2 , x 3 , ..., x k ] T ∈ R k by adding powers of x as new features such that the vectors can be fed into the

Original: w 0 + w 1 x + w 2 x 2 + ... + w k x k .
Revised: [Equation]

Original: To choose the best hyperparameter value, i.e. the polyno- mial degree k , the students plot a learning curve displaying the training and validation error for k = 1 , ..., n .
Revised: To choose the best hyperparameter value, i.e. the polynomial degree k , the students plot a learning curve displaying the training and validation error for k = 1 , ..., n .

Original: The ﬁnal task is to calculate the generalization error the model produces on the test set and comparing it to the validation loss.
Revised: The ﬁnal task is to calculate the generalization error the model produces on the test set and comparing it to the validation loss.

Original: The exercise has been processed by ten groups of three students, where we could detect that each group had problems with different aspects, both concerning the data handling and the tuning process: Some groups did not take care of the representative segmentation of the data.
Revised: The exercise has been processed by ten groups of three students, where we could detect that each group had problems with different aspects, both concerning the data handling and the tuning process: Some groups did not take care of the representative segmentation of the data.

Original: As a consequence, the validation and test set contained instances from two disjoint areas of the data set, e.g. validation set with x < 0 and test set x ≥ 0 .
Revised: As a consequence, the validation and test set contained instances from two disjoint areas of the data set, e.g. validation set with x < 0 and test set x ≥ 0 .

Original: Since the model selection is based on the training and validation set, this segmentation will focus on models well approximating the instances with negative x -values and disregard their behavior for non-negative x -values.
Revised: Since the model selection is based on the training and validation set, this segmentation will focus on models well approximating the instances with negative x -values and disregard their behavior for non-negative x -values.

Original: In a few groups, we could observe that the test error was not calculated due to the missing expansion of the original scalar inputs to powers of the input up to degree k .
Revised: In a few groups, we could observe that the test error was not calculated due to the missing expansion of the original scalar inputs to powers of the input up to degree k .

Original: The usage of a pre-processing pipeline for the given and incoming instances during production (like applying feature normalization, PCA, etc.) is necessary for complex, real-world applications, too.
Revised: The usage of a pre-processing pipeline for the given and incoming instances during production (like applying feature normalization, PCA, etc.) is necessary for complex, real-world applications, too.

Original: One group even changed the given code so that the previously ﬁxed segmentation of data was thus performed randomly on each execution which led to non-reproducible results.
Revised: One group even changed the given code so that the previously ﬁxed segmentation of data was thus performed randomly on each execution which led to non-reproducible results.

Original: Regarding the tuning process, three issues occurred in individual groups: On the one hand, we observed a common error to involve the test set already for selecting the best model, a different group took this decision based only on the training error - both variants are wrong.
Revised: Regarding the tuning process, three issues occurred in individual groups: On the one hand, we observed a common error to involve the test set already for selecting the best model, a different group took this decision based only on the training error - both variants are wrong.

Original: The last noticed error concerns the error function that had to be implemented by the students.
Revised: The last noticed error concerns the error function that had to be implemented by the students.

Original: Since the three data sets are typically not of equal size, the summed error over all instances should be averaged over the size of the respective sets. 
Revised: Since the three data sets are typically not of equal size, the summed error over all instances should be averaged over the size of the respective sets. [Figure]

Original: 2.3. Backpropagation and Auto-Differentiation
Revised: 2.3. Backpropagation and Auto-Differentiation

Original: To train deeper models than linear regression, the automatic derivation of gradients of the loss function with respect to each weight is a key element.
Revised: To train deeper models than linear regression, the automatic derivation of gradients of the loss function with respect to each weight is a key element.

Original: Backpropagation, as introduced for classical multilayer perceptrons (Rumelhart et al., 1985), is the algorithm that runs deep learning.
Revised: Backpropagation, as introduced for classical multilayer perceptrons (Rumelhart et al., 1985), is the algorithm that runs deep learning.

Original: Approaching it for the ﬁrst time might however feel daunting.
Revised: Approaching it for the ﬁrst time might however feel daunting.

Original: In our experience, including many remarks about reverse-mode autodiff, chain-rule, Jacobian, or delta-rule will have students either ignoring the material (“the autograd framework will do the job”) or spending a generous amount of paper deriving equations by hand.
Revised: In our experience, including many remarks about reverse-mode autodiff, chain-rule, Jacobian, or delta-rule will have students either ignoring the material (“the autograd framework will do the job”) or spending a generous amount of paper deriving equations by hand.

Original: Yet a healthy understanding of the gradients’ purpose is critical.
Revised: Yet a healthy understanding of the gradients’ purpose is critical.

Original: Recent textbooks (e.g., (G ´ eron, 2017)) have begun to include discussions on automatic differentiation on simpler functions such as f ( x, y ) =
Revised: Recent textbooks (e.g., (G ´ eron, 2017)) have begun to include discussions on automatic differentiation on simpler functions such as f ( x, y ) =

Original: x 2 +2 xy +

Revised: x 2 +2 xy +

Original: as one ingredient of backpropagation (the other one being the actual parameter update, i.e., the gradient step).
Revised: as one ingredient of backpropagation (the other one being the actual parameter update, i.e., the gradient step).

Original: However, that approach might feel discontinuous to students, leaving unclear what parts of the gradients of a neural network’s parameters are derived automatically.
Revised: However, that approach might feel discontinuous to students, leaving unclear what parts of the gradients of a neural network’s parameters are derived automatically.

Original: For example, students associated autodiff with the activation functions alone and thought of backpropagation as an encompassing algorithm.
Revised: For example, students associated autodiff with the activation functions alone and thought of backpropagation as an encompassing algorithm.

Original: Therefore, our remedy was to work through the simplest multidimensional neural network imaginable, i.e., a 2-22 network as depicted in Figure 3 with a simple sum of squared errors as loss.
Revised: Therefore, our remedy was to work through the simplest multidimensional neural network imaginable, i.e., a 2-22 network as depicted in Figure 3 with a simple sum of squared errors as loss.

Original: Having two outputs is beneﬁcial since, e.g., the output of h 2 affects both y 1 and y 2 , immediately requiring the multivariate chain rule.
Revised: Having two outputs is beneﬁcial since, e.g., the output of h 2 affects both y 1 and y 2 , immediately requiring the multivariate chain rule.

Original: In that example, y 1 should go up and y 2 should simultaneously go down.
Revised: In that example, y 1 should go up and y 2 should simultaneously go down.

Original: Having a numerical example allows for “interpreting the gradients”.
Revised: Having a numerical example allows for “interpreting the gradients”.

Original: For instance, considering the weight connecting h 1 and y 2 (currently − 2 ), students can verify that a small increase from − 2 to − 1 .
Revised: For instance, considering the weight connecting h 1 and y 2 (currently − 2 ), students can verify that a small increase from − 2 to − 1 .

Original: 9 would increase the input to (and consequently the output of) y 2 , which is what we would want to avoid.
Revised: 9 would increase the input to (and consequently the output of) y 2 , which is what we would want to avoid.

Original: The example network can be displayed when going through backpropagation step-by-step, interleaved with the formal steps necessary to calculate the involved gradients (back from the loss, back through an activation, back to the weights of a layer, etc.).
Revised: The example network can be displayed when going through backpropagation step-by-step, interleaved with the formal steps necessary to calculate the involved gradients (back from the loss, back through an activation, back to the weights of a layer, etc.).

Original: The particular example we selected also highlights problems with vanishing gradients that emerge when using sigmoidal activation functions that are improperly initialized (i.e., much too high in this case).
Revised: The particular example we selected also highlights problems with vanishing gradients that emerge when using sigmoidal activation functions that are improperly initialized (i.e., much too high in this case).

Original: Later, this example is also useful to demonstrate how batch normalization mitigates these issues and retains much more usable gradient signals in earlier layers even with sigmoid.
Revised: Later, this example is also useful to demonstrate how batch normalization mitigates these issues and retains much more usable gradient signals in earlier layers even with sigmoid.

Original: In terms of practical exercises, the network can be used simply to have students calculate (some of) the gradients manually, along with “checkpoints” such as that ∂L∂w 1 , 1 should be − 0 .
Revised: In terms of practical exercises, the network can be used simply to have students calculate (some of) the gradients manually, along with “checkpoints” such as that ∂L∂w 1 , 1 should be − 0 .

Original: But it is probably more sensible to have them code it in a programming language of their choice and keep it extensible (try out different activation functions, write a tiny autograd library, etc).
Revised: But it is probably more sensible to have them code it in a programming language of their choice and keep it extensible (try out different activation functions, write a tiny autograd library, etc).

Original: In addition, we asked them to interpret gradients the aforementioned way for different training instances.
Revised: In addition, we asked them to interpret gradients the aforementioned way for different training instances.

Original: 3. Conclusion
Revised: 3. Conclusion

Original: We reﬂected on our experiences with teaching essential machine learning skills to software engineering students, emphasizing the shift from a constructive to an empirical mindset and the temptations of existing powerful black box code snippets that need to be backed up by proper grasp of the fundamentals.
Revised: We reﬂected on our experiences with teaching essential machine learning skills to software engineering students, emphasizing the shift from a constructive to an empirical mindset and the temptations of existing powerful black box code snippets that need to be backed up by proper grasp of the fundamentals.

Original: Based on what we assume to be the more frequently recurring tasks for ongoing machine learning engineers, we suggested a lean teaching concept that focuses on experimentation and understanding of gradient dynamics.
Revised: Based on what we assume to be the more frequently recurring tasks for ongoing machine learning engineers, we suggested a lean teaching concept that focuses on experimentation and understanding of gradient dynamics.

Original: For all our proposed exercises, Jupyter notebooks are made available and we hope to initiate a collection of interesting code examples to turn software engineers into
Revised: For all our proposed exercises, Jupyter notebooks are made available and we hope to initiate a collection of interesting code examples to turn software engineers into

Original: ML engineers.
Revised: ML engineers.