Giter Club home page Giter Club logo

programming_formalisms's Introduction

Programming formalisms

'Programming Formalisms' course logo, by Jonas Söderberg and Lars Eklund

Build PDFs Check links Check spelling Deploy GitHub Pages

For teachers

Files used for continuous integration scripts

Filename Descriptions
mlc_config.json Configuration of the link checker
.spellcheck.yml Configuration of the spell checker, use pyspelling -c .spellcheck.yml to do spellcheck locally
.wordlist.txt Whitelisted words for the spell checker, use pyspelling -c .spellcheck.yml to do spellcheck locally
.pylintrc Configuration file for pylint
pyproject.toml Configuration file of this package

programming_formalisms's People

Contributors

bclaremar avatar dahlo avatar jonandernovella avatar larseklund avatar netzach avatar quantumtwitch avatar richelbilderbeek avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

programming_formalisms's Issues

Suggest vote: conformize folder naming

Currently, when doing ls, I see:

[...]
common-practices
data_structures
DevelopmentDesign
Formalism.png
learning_line.md
[...]

Note the mix of naming styles, with dash-case, snake_case, CamelCase and Titlecase.

I suggest to follow the current most popular one, which is snake_case, which would result in:

[...]
common_practices
data_structures
development_design
formalism.png
learning_line.md
[...]

I suggest to vote on this 👍

Join new course schedule determining group yes/no

We had ideas for a new order of discussing course topics, most notably by getting the workflow in place in day 1, so that we can focus on the meat of the course from then.

What about those interested suggest a new order?

And if not interested, one can unassign oneself :-)

Improve class design theory

  • aggregation and composition are two different things with two different types of arrow. In the course, we use composition
  • the example diagram does not make sense:
classDiagram
    Move *-- set_speed
    Move *-- set_direction
    Move *-- change_position

This suggests that a Move object is composed of a set_speed, set_direction and change_position object

classDiagram
  class Person{
    + name
    + personnummer
  }

or

classDiagram
  note "Not all strings are names"
  class Name{
    + name
    + set_name(str)
    + get_number()
  }

or

classDiagram
  note "Not all strings are names\nNot all numbers are personnummers"

  class Person{
    + name
    + personnummer
  }
  class Name{
    + name
    + set_name(str)
    + get_number()
  }
  class Personnummer{
    + number
    + set_number(int)
    + get_number()
  }
  Person *-- Name
  Person *-- Personnummer

Fix Day 1 material

From a learner:

There is a slight inconsistency in the "Create a first version of the python code" type-along. It is suggested to create a directory "Figure", but the "plt.savefig" command saves to a "Figures" folder.

Use file and directory naming standard

Currently, the repo has a mix of naming styles.

  • the root folder follows snake_case, except for the README.md
  • other folders have uppercase letters in them, e.g. extra_BC

I suggest to use a standarized naming, snake_case, where the folder mentioned would become extra_bc.

I volunteer to do this and fix the broken links.

Vote: `git checkout` or `git switch`

Currently, we teach both git checkout or git switch

I think we should minimize the number of git commands.

To do so, we should decide upon using git checkout or git switch.

Without any research, yet the unconfirmed info that git switch is more specific to branching, combined with that we only use these git commands for branching, I'd prefer git switch slightly.

Let's vote on this 👍

Simplify prereqs

The prereqs are needlessly detailed.

Can we/I simplify?

I suggest to simplify by:

  • #20
  • Assume learners know git: only link to other sites
  • Only link to VSCode, git terminal and GitHub
  • Do add: how to verify each of these things work
  • Remove using SSH keys for git: it is clever, yet not a goal of the course

I volunteer to do these

Check for spelling in 'DevelopmentDesign' folder

Currently, there are spelling errors in the 'DevelopmentDesign' folder.

As priorities are not on fixing these spelling errors now, this commit excludes the folder from a spell check.

When spelling checking is desired again, that folder can be added again :-)

Check the prereqs for Linux

The current prereqs are tested for Windows and Mac only.

A Linux user should check if this works for Linux too.

Change order: class list, then class diagram

Me and Lars think at would be better if:

  • first, get a list of class names. The learners reach an agreement
  • second, combine these in one class diagram with 'has-a' relationships between classes. The learners reach an agreement
  • [edit: do not assign an owner of each class ], as the learners took responsibility for all classes

Vote: all exercises are ideally part of implementing the project

Make all exercises part of implementing the project. including the TDD/Pair programming exercise maybe some sort of status function and movement function not necessarily OO but in a way that the learners can see what to implement once they start going into the simulation algorithms

Update schedule

This schedule is in the incorrect order, see the HackMD for the correct one

Share dream evaluation

We agreed to share our dream evaluation here, that will be held anonymously.

We all agreed that we follow the NBIS anonymous evaluation too: it's a requirement :-)

Mine:

- What should we keep doing?
- Which section(s) scheduled enough time for exercises?
- What should we improve?
- Other comments?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.