|
50 | 50 | <div class="body" role="main"> |
51 | 51 |
|
52 | 52 | <div class="section" id="introduction-abstraction-in-mathematics-and-programming"> |
53 | | -<h1><span class="section-number">1. </span>Introduction: abstraction in mathematics and programming<a class="headerlink" href="#introduction-abstraction-in-mathematics-and-programming" title="Permalink to this headline">¶</a></h1> |
| 53 | +<span id="introduction"></span><h1><span class="section-number">1. </span>Introduction: abstraction in mathematics and programming<a class="headerlink" href="#introduction-abstraction-in-mathematics-and-programming" title="Permalink to this headline">¶</a></h1> |
54 | 54 | <p>A core tool of mathematics is to define abstract objects and the |
55 | 55 | operations which apply to them. This approach defines all the basic |
56 | 56 | building blocks which enable us to reason mathematically and perform |
@@ -106,6 +106,80 @@ <h1><span class="section-number">1. </span>Introduction: abstraction in mathemat |
106 | 106 | from a mathematician’s perspective, understanding programming as a |
107 | 107 | process of defining and manipulating mathematical objects, and |
108 | 108 | scientifically testing and debugging the results.</p> |
| 109 | +<div class="section" id="how-to-do-this-course"> |
| 110 | +<h2><span class="section-number">1.1. </span>How to do this course<a class="headerlink" href="#how-to-do-this-course" title="Permalink to this headline">¶</a></h2> |
| 111 | +<p>Programming, like mathematics, is a practical, problem solving discipline. It’s |
| 112 | +not possible to learn to program just by reading notes and watching lectures. To |
| 113 | +learn to program you need to put the content of the course into practice by |
| 114 | +writing code. The structure of this course is designed to help you to really |
| 115 | +understand new concepts in programming by putting them into practice. Each week, |
| 116 | +we run through the same cycle:</p> |
| 117 | +<ol class="arabic simple"> |
| 118 | +<li><p>Read the notes</p></li> |
| 119 | +<li><p>Watch the videos</p></li> |
| 120 | +<li><p>Do the quiz</p></li> |
| 121 | +<li><p>Write the code</p></li> |
| 122 | +</ol> |
| 123 | +<div class="section" id="the-notes"> |
| 124 | +<h3><span class="section-number">1.1.1. </span>The notes<a class="headerlink" href="#the-notes" title="Permalink to this headline">¶</a></h3> |
| 125 | +<p>All of the new material we cover in this course is presented in the notes. They |
| 126 | +always the starting point for your work. Each chapter will introduce new |
| 127 | +concepts in programming, often tied back to related mathematical concepts, and |
| 128 | +always illustraded by practical code examples. Python has excellent <a class="reference external" href="https://docs.python.org/3/">official |
| 129 | +online documentation</a>, and we link to that |
| 130 | +throughout the text. External links show up in orange while <a class="reference internal" href="#introduction"><span class="std std-ref">internal links |
| 131 | +to other parts of the notes</span></a> are red. Sometimes we introduce |
| 132 | +counterexamples: illustrations of code errors or bad implementation ideas. These |
| 133 | +will be flagged with a big red cross:</p> |
| 134 | +<div class="badcode docutils container"> |
| 135 | +<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span> <span class="s2">"Hello World"</span> |
| 136 | +</pre></div> |
| 137 | +</div> |
| 138 | +</div> |
| 139 | +<p>Conversely, if it’s necessary in context to highlight which approach is the |
| 140 | +correct one, the code will come with a big green tick:</p> |
| 141 | +<div class="goodcode docutils container"> |
| 142 | +<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"Hello World"</span><span class="p">)</span> |
| 143 | +</pre></div> |
| 144 | +</div> |
| 145 | +</div> |
| 146 | +<p>At the end of each chapter there is a glossary containing key new concepts |
| 147 | +introduced in that chapter. Always check the glossary and convince yourself that |
| 148 | +you understand all the terms introduced there, this is a good check on whether |
| 149 | +you have understood the chapter as a whole. However, there is more to learning |
| 150 | +new concepts than just the vocabulary, so don’t be tempted to skip reading the |
| 151 | +chapter and just jumping to the glossary!</p> |
| 152 | +<p>The chapters broadly alternate between introducing new programming concepts, |
| 153 | +such as <a class="reference internal" href="2_objects.html#objects"><span class="std std-ref">Objects and abstraction</span></a>, <span class="xref std std-ref">abstract data types</span>, or <a class="reference internal" href="6_inheritance.html#inheritance"><span class="std std-ref">Inheritance and composition</span></a>, and |
| 154 | +covering various aspects of the craft of programming, such as <span class="xref std std-ref">style</span>, |
| 155 | +<a class="reference internal" href="7_debugging.html#debugging"><span class="std std-ref">Debugging and testing</span></a>. In this way the course combines specific programming knowledge |
| 156 | +with more general coding skills.</p> |
| 157 | +</div> |
| 158 | +<div class="section" id="the-videos"> |
| 159 | +<h3><span class="section-number">1.1.2. </span>The videos<a class="headerlink" href="#the-videos" title="Permalink to this headline">¶</a></h3> |
| 160 | +<p>Throughout the notes are links to videos. These aren’t typical lecture videos in |
| 161 | +that they’re not primarily focussed on delivering the new ideas in the course. |
| 162 | +In particular, the videos don’t set out to duplicate the delivery of the |
| 163 | +material in the notes. Instead, the videos focus on putting the concepts into |
| 164 | +practice, often by showing live coding sessions. Usually you’ll want to watch |
| 165 | +the video for a given section <em>after</em> reading the corresponding notes.</p> |
| 166 | +</div> |
| 167 | +<div class="section" id="the-quizes"> |
| 168 | +<h3><span class="section-number">1.1.3. </span>The quizes<a class="headerlink" href="#the-quizes" title="Permalink to this headline">¶</a></h3> |
| 169 | +<p>Towards the end of each chapter is a link back to a quiz on Imperial’s |
| 170 | +Blackboard system. The quizes are designed to allow you to convince yourself |
| 171 | +that you’ve understood the material in the chapter. Sometimes they will simply |
| 172 | +be multiple choice questions testing your understanding of the material, but |
| 173 | +sometimes you will need to open up Python and try things out in order to work |
| 174 | +out the right answer. The quizes do not contribute to your module grade, but how |
| 175 | +well you are doing on them is an indication of your progress on the module.</p> |
| 176 | +</div> |
| 177 | +<div class="section" id="the-exercises"> |
| 178 | +<h3><span class="section-number">1.1.4. </span>The exercises<a class="headerlink" href="#the-exercises" title="Permalink to this headline">¶</a></h3> |
| 179 | +<p>As we’ve already noted, really learning to program better is only achieved by |
| 180 | +writing code. The core of each week’s activities is therefore to ß</p> |
| 181 | +</div> |
| 182 | +</div> |
109 | 183 | </div> |
110 | 184 |
|
111 | 185 |
|
|
0 commit comments