Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
f3d36fb
Remove old course content and add new pages
thomaskileyukaea Aug 9, 2023
cf49f19
Add a concluding section talking about YAGNI
thomaskileyukaea Aug 9, 2023
22ef936
Add headers for the various new pages
thomaskileyukaea Aug 9, 2023
046677d
Add in exercises for the new sections
thomaskileyukaea Aug 9, 2023
664afbc
Fix file name extensions
thomaskileyukaea Aug 9, 2023
d39c621
Add first draft of the software design episode
thomaskileyukaea Oct 10, 2023
e0e6da1
Add first draft of the pure functions section
thomaskileyukaea Oct 10, 2023
3103a3c
Adding first draft of the MVC section
thomaskileyukaea Oct 10, 2023
9c40c44
First draft of the class section of the episode
thomaskileyukaea Oct 17, 2023
860fbd8
First draft of the episode conclusion
thomaskileyukaea Oct 17, 2023
fcd6aa1
Update introduction to not mention paradigms
thomaskileyukaea Oct 18, 2023
0d06342
Move exercise about good and bad code before abstractions
thomaskileyukaea Oct 18, 2023
97f8590
Highlight where the code we are refactoring is
thomaskileyukaea Oct 18, 2023
78943f8
Expand the solution of the find problems with the code exercise
thomaskileyukaea Oct 18, 2023
77ffa14
Make the section explaining the tests clearer
thomaskileyukaea Oct 18, 2023
7f9b163
Add guidance to the regression test exericse
thomaskileyukaea Oct 18, 2023
253efda
Define regression testing before using it as exercise name
thomaskileyukaea Oct 18, 2023
81b414f
Add paragraph introducing cognitive load
thomaskileyukaea Oct 18, 2023
a2c5f2e
Fix type in introduction to pure functions
thomaskileyukaea Oct 18, 2023
6e69823
Add a bit about congitive load in advantages of pure functions
thomaskileyukaea Oct 18, 2023
0006a86
Explain that pure functions are easier to test ine one place
thomaskileyukaea Oct 18, 2023
b0f48e9
Incorporate the point about reuse pure functions into main text
thomaskileyukaea Oct 18, 2023
a653eeb
Highlight that the glue code is the non-pure code
thomaskileyukaea Oct 18, 2023
cd19c7f
USe model view presenter as alternative architecture
thomaskileyukaea Oct 18, 2023
5358305
Add header to call out about the controller
thomaskileyukaea Oct 18, 2023
b0d520d
Provide an example for how the model should be agnostic about the view
thomaskileyukaea Oct 18, 2023
4f727f0
Improve formatting of model/view classification exercise
thomaskileyukaea Oct 18, 2023
13b7df2
Emphasise the connection to the last episode
thomaskileyukaea Oct 18, 2023
a541c88
Improve clarity of first exercise in the MVC section
thomaskileyukaea Oct 18, 2023
e8375d4
Improve readability of the second exercise from the MVC section
thomaskileyukaea Oct 18, 2023
17f0395
Tightening up concluding paragraph
thomaskileyukaea Oct 18, 2023
9c8ec84
Fix semantic break in section about constructors
thomaskileyukaea Oct 18, 2023
19f07b3
Correct code sample to use write capitalisation for math.pi
thomaskileyukaea Oct 18, 2023
7f60230
Add examples for invariants and encapsulation
thomaskileyukaea Oct 18, 2023
66a904c
Add a callout about why maintaining invariants is good
thomaskileyukaea Oct 18, 2023
0f68b3e
Improve the class loading exercise content
thomaskileyukaea Oct 18, 2023
0c8817a
Add the controller modifications to the solution
thomaskileyukaea Oct 18, 2023
7924462
Fix spelling type in exercise title
thomaskileyukaea Oct 18, 2023
13bab51
Small fixes to flow of text in oop section
thomaskileyukaea Oct 18, 2023
3f3ecd3
Make the using classes in functional programming a callout
thomaskileyukaea Oct 18, 2023
bd41da7
Fixed incorrect usage of episode
thomaskileyukaea Oct 18, 2023
2bea011
Add diagram for solution to the architecture exercise
thomaskileyukaea Oct 18, 2023
10aa3fd
Remove redundant see this commit text
thomaskileyukaea Oct 18, 2023
3362067
Correct broken links in extras
thomaskileyukaea Oct 18, 2023
f766d70
Add initial timings for episodes
thomaskileyukaea Oct 23, 2023
4343b1d
Ensure model test is agnostic as to where it is run from
thomaskileyukaea Oct 23, 2023
515ed18
Correct example function name
thomaskileyukaea Oct 23, 2023
51cf100
Fixing spelling mistakes in refactoring functions exercise
thomaskileyukaea Oct 23, 2023
a79d394
Make sure there is an import for the Mock class
thomaskileyukaea Oct 23, 2023
c4e1146
Cover the changes needed to the regression test with the class refactor
thomaskileyukaea Oct 23, 2023
a77b9d6
Link decoupling to abstractions
thomaskileyukaea Oct 23, 2023
dfdb1a9
Make consistent use of first/second person
thomaskileyukaea Oct 23, 2023
aebc099
Ensure each problem links to a specific part of maintainable code
thomaskileyukaea Oct 23, 2023
a6e502a
Improve grammar of exercise solution
thomaskileyukaea Oct 23, 2023
35fd32d
Move MVC stuff after the classes section
thomaskileyukaea Oct 23, 2023
d1c3491
Combine YAGNI section into the MVC section
thomaskileyukaea Oct 23, 2023
05fee5b
Use consistent langauge - responsibilties - when talking about parts …
thomaskileyukaea Oct 23, 2023
dfcf219
Improve the flow of the start of the classes section
thomaskileyukaea Oct 23, 2023
1de7c86
Use correct name for CSVDataSource
thomaskileyukaea Oct 23, 2023
1f03d9e
Make the interfaces section not use real interfaces
thomaskileyukaea Oct 23, 2023
0df2ed8
Remove ... from example solution
thomaskileyukaea Oct 23, 2023
4488303
Ensure code samples consistent with new order
thomaskileyukaea Oct 23, 2023
54f3c9c
Fix formatting of solution regression test
thomaskileyukaea Oct 23, 2023
b663efa
Correct name of the regression test to match convention
thomaskileyukaea Oct 23, 2023
9eae6e2
Provide a skeleton for the test to make the exercise a bit easier
thomaskileyukaea Oct 23, 2023
c3d845c
Provide signature for pure function
thomaskileyukaea Oct 23, 2023
dc747dd
Use variable name data rather than all_loaded_data for example
thomaskileyukaea Oct 23, 2023
cafc20d
Introduce a header for the testing of pure functions section
thomaskileyukaea Oct 23, 2023
fa67fab
Add a hint showing how the class will be use
thomaskileyukaea Oct 23, 2023
c1eeb61
Remove bit about adding a layer of indirection
thomaskileyukaea Oct 23, 2023
51a1f99
Clarifying mocking section
thomaskileyukaea Oct 23, 2023
84edea9
Add skeleton test for writing the mock test
thomaskileyukaea Oct 23, 2023
3185e1b
Remind students to import the appropriate package
thomaskileyukaea Oct 23, 2023
f461a05
Make example actually build a JSON reader
thomaskileyukaea Oct 23, 2023
8ad11f7
Fix solutions based on testing
thomaskileyukaea Oct 23, 2023
47b3c81
Include the notion of writing tests before refactoring
thomaskileyukaea Oct 23, 2023
a672614
Reiterate running the regression test after each refactor
thomaskileyukaea Oct 23, 2023
e53f787
Correct capitalisation of files
thomaskileyukaea Nov 3, 2023
e7a3e0e
Fix missing fullstop
thomaskileyukaea Nov 3, 2023
224ea65
Fix line numbers for solutions based on change to code
thomaskileyukaea Nov 10, 2023
32ba1a1
Merged Thomas's work on section 3
anenadic Dec 12, 2023
8f1937b
Link and typo fixes
anenadic Dec 12, 2023
d393dc1
some spelling corrections
douglowe Jan 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions _episodes/15-coding-conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ because an incorrect comment causes more confusion than no comment at all.
>> which is helpfully marking inconsistencies with coding guidelines by underlying them.
>> There are a few things to fix in `inflammation-analysis.py`, for example:
>>
>> 1. Line 24 in `inflammation-analysis.py` is too long and not very readable.
>> 1. Line 30 in `inflammation-analysis.py` is too long and not very readable.
>> A better style would be to use multiple lines and hanging indent,
>> with the closing brace `}' aligned either with
>> the first non-whitespace character of the last line of list
Expand Down Expand Up @@ -487,7 +487,7 @@ because an incorrect comment causes more confusion than no comment at all.
>> Note how PyCharm is warning us by underlying the whole line.
>>
>> 4. Only one blank line after the end of definition of function `main`
>> and the rest of the code on line 30 in `inflammation-analysis.py` -
>> and the rest of the code on line 33 in `inflammation-analysis.py` -
>> should be two blank lines.
>> Note how PyCharm is warning us by underlying the whole line.
>>
Expand Down
13 changes: 4 additions & 9 deletions _episodes/30-section3-intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,15 +131,10 @@ within the context of the typical software development process:
- How requirements inform and drive the **design of software**,
the importance, role, and examples of **software architecture**,
and the ways we can describe a software design.
- **Implementation choices** in terms of **programming paradigms**,
looking at **procedural**, **functional**, and **object oriented** paradigms of development.
Modern software will often contain instances of multiple paradigms,
so it is worthwhile being familiar with them and knowing when
to switch in order to make better code.
- How you can (and should) assess and update a software's architecture when
requirements change and complexity increases -
is the architecture still fit for purpose,
or are modifications and extensions becoming increasingly difficult to make?
- How to improve existing code to be more readable, maintainable and testable.
- Consider different strategies for writing well designed code, including
using **pure functions**, **classes** and **abstractions**.
- How to create, assess and improve software design.


{% include links.md %}
395 changes: 150 additions & 245 deletions _episodes/32-software-design.md

Large diffs are not rendered by default.

175 changes: 0 additions & 175 deletions _episodes/33-programming-paradigms.md

This file was deleted.

Loading