UPPMAX
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # Programming formalisms — Shared document Oct 2025 - Zoom: https://uu-se.zoom.us/j/69343877832 - Passcode: git - Course material: - <https://uppmax.github.io/programming_formalisms> - Shared project: - <https://github.com/programming-formalisms/programming_formalisms_project_autumn_2025> ## I want a certificate for the course Name|Email 1: Alice Furlotti alice.furlotti@geo.uu.se 2: Anna-Lena Fischer anna.lena.fischer@kemi.uu.se 3: Carlos Gueto-Tettay:: carlos.alberto_gueto_tettay@med.lu.se 4:Gabriel Ducrocq: gabriel.ducrocq@liu.se 5: 6: 7: ## ## Retrospects ## day 4 What helped us learn (let us move forward) 2 min - A: As usual, group exercises - A: The possibility to ask questions and get extensive answers. Thank you for your patience! - A: - A:Group work, practical exercises - A: - A: Continous Integration and group work - A: Nice group work. - A: The team exercises, in particular for writing clases. The session on automated testing workflows within GitHub (and locally) were very interesting. - A: - A: - A: the testing exercise was good! Finding out the options to automate the testing was nice. - A: Ruff - was a good extension What stopped us from learning (What held us back) 2 min¶ - A: Maybe the schedule was a bit messy today, I would gladly have had class design before OOD - A: - A: I found some text, in particular the Object-oriented programming section, hard to read because of typos. I wish it wasn't so much like bullet points. It often asks us about a concept and only give bullet points but we have to go to some alternative reading material to find the answer. Many concepts were remain a bit abstract even after the explanations...I also got lost with many exercises because they were a bit vague or use terms before getting explanations about it (e.g., refactoring) - A: Maybe some more clarifications about object oriented programming would have been helpful. Less theory and more examples. - A: - A: assignments were not always clear, confused about what we should actually do... - A: a bit confused about the reverseb classroom situtation, since we didn't have time to read up upon it before (and text didn't alwyas provide the answers that were asked there) - A: - A: Most concepts introduced today was a hard to intrepret in our discipline specific examples - A: The concepts of object and class were a little hard. - A: Time, short answers, no too deep explainations and typos in documentation. -A: - A: Unit test lessons were unclear - A: Little time to complete all the exercises, would have appreciated less to do but with more time to focus What could we do to improve learning (What can we invent) 2 min¶ - A: I think in general it would be beneficial to focus on easier tasks and not too much on the weather exercise, with more discussion. Baby steps and more time to digest. - A: - A: Better material with less bullet points and more structure and explanations would help - A: As much as I appreciate working with teams, sometimes I wish I could read on my own without other people around. I find it distracting because I feel pressure to finish faster. I prefer when we get examples explained by the teacher before diving into the exercises. - A: more explanation of terms and basic "vocabulary", more straigth forward assignments, clearer instructions - A: - A: More examples before working on our own, sometimes it is hard to figure out everything on your own - A: - A: Also, sometimes the concepts are too simple and feels difficult to relate to our discipline, maybe more examples to show how it looks would be appreciated - A: Maybe a solid example/exercises on object & class diagrams would be good - A: - A: More self-contained examples with answers that we can revisit later on. Add more links to external videos on hands-on coding for every or most concepts. What will we do(Act) [Teachers only]¶ -Lars Imporve learning material especially eplanatory sections of the excercise, more theory in the material. -Lars Introduce concepts both in material and in "lecture" -Lars don't be afraid to lift things to plenum if it seems to be of general intrest. -Lars Ask for spelling correction, spell checker not enough (Dyslexia issue) (for example in places where markdown formatting may make the text unreadable for the lexical) -Lars Add more and deeper text, discipline specific examples, how to apply in real world. (Extend and rework the examples on class design(weather staion example) Show how the object design corresponds to the actual weatherstation example and how to arrive at those conclusions. Show where each concept ties in to the example not just the finnished product but how I think which principles I apply when I do the objects. ## Confidence Report: (maximum 10min) You can leave when you are done. Give you confidence levels of the following statements, using this scale: - 0: I don't know even what this is about ...? - 1: I have no confidence I can do this - 2: I have low confidence I can do this - 3: I have some confidence I can do this - 4: I have good confidence I can do this - 5: I absolutely can do this! I understand why Continuous Integration is useful - A: 5 - A: 5 - A: 5 - A: - A: 3 - A: - A: - A: - A: - A: - A: - A: 4 I can find the error messages given by the Continuous Integration tests - A: 5 - A: 5 - A: 5 - A: - A:4 - A: - A: - A: - A: - A: - A: - A: 5 I can (choose to) write code that is Good Enough - A: 4 - A: 3 - A: 4 - A: - A: - A:3 - A: - A: - A: - A: - A: 5 - A: I understand what a Semantic gap is? - A: 4 - A: 1 - A: 3 - A: - A:1 - A: - A: - A: - A: - A: 3 - A: - A: I Comprehend the principles of object-oriented development, such as information hiding - A: 5 - A: - A: 4 - A: - A: 3 - A: 3 - A: - A:2 - A: - A: - A: - A: I know what modular programming is - A: 3 - A: 5 - A: 3 - A: - A: 3 - A: - A: - A:3 - A: - A: - A: - A: I have an idea when use classes is worth it (and when not) - A: 3 - A: - A: 4 - A: 3 - A: 4 - A: - A:2 - A: - A: - A: - A: - A: I can give some features of good class design - A: 4 - A: 2 - A: - A: - A: 2 - A: - A: 2 - A: - A:2 - A: - A: - A: I can write a simple class - A: 4 - A: 3 - A: - A: - A:3 - A: - A: 3 - A: - A: - A: 4 - A: - A: I understand the type of relation 'composition' - A: 3 - A: - A: 2 - A: - A:2 - A: - A: 2 - A: - A: - A: 1 - A: - A: Iterative refactoring - A: 5 - A: 2 - A: - A:2 - A: - A: 1 - A: - A: 3 - A: - A: - A: - A: Learn about common interfaces, protocols, and their role in modular programming. - A: 3 - A: - A: - A: 1 - A: - A: 1 - A: - A:1 - A: - A: 1 - A: - A: Learn the definition and characteristics of an object, - A: 5 - A: - A: 3 - A: - A: 3 - A: - A: 4 (after intensive discussion with Lars) - A: - A:2 - A: - A: - A: Recognize and address tight coupling in code to improve modularity. - A: 3 - A: - A: - A: 2 - A: - A: 3 - A: - A: 1 - A:2 - A: - A: - A: Recognize the importance of relationships between classes including coposition and association - A: 4 - A: - A: - A: 1 - A: 1 - A: - A: 2 - A:2 - A: - A: - A: - A: Understand the benefits of object-oriented development - A: 4 - A: - A: 3 - A: - A: - A: 4 - A: - A:2 - A: - A: - A: - A: Understand the concept of code smells and design smells - A: 5 - A: 4 - A: - A: 3 - A: - A: 2 - A: - A: - A:2 - A: - A: - A: Understand the definition and structure of a class as a collection of objects - A: 5 - A: - A: - A: 2 - A: - A: 4 - A: 2 - A: - A: - A:2 - A: - A: ## ## Day 5 Retrospect What helped us learn (let us move forward) 2 min -A: -A: -A: Exercises, specially the testing time with cprofile. I liked hearing about creating packages, and also about ReadTheDocs and similar options. -A: create and upload a package to pypi -A: -A: As always, the exercises: they help staying active -A: -A:Testing the performance of the code with the cprofile was useful! Along with their rules - super useful in improving our programming! -A:The group exercise were helpful! Documentation tasks, Licensing, README documentations were super helpful. What stopped us from learning (What held us back) 2 min¶ -A:In general, I think it would be better if some more actual explanation was introduced, together with practical examples, instead of reading and highlighting the online material. Sometimes attention is hard to keep for prolonged time, if the teacher is reading. -A:Hard to grasp some concepts on build. -A: I had the feelings sometimes the teacher were distracted or not sure "what was next" (but honestly, aren't we all tired?) -A: Some teachers seem to be in a rush all the time. They explain at a superficial level. -A: -A: very time-constrained course; it feels like virtual environments are introduced very late in the course, even though they would be already useful in the beginning (before installing anything in base, helps also in cleaning up after the course is done); it often felt like the teachers are just reading the page and then run out of time for questions/exercises -A: Short time for some tasks/topics What could we do to improve learning (What can we invent) 2 min¶ -A: Perhaps because I've wrote READMEs for my GitHub repositories before, I wish less time had been spent on that, and instead I wish we could hear more about creating Wikis and ReadTheDocs-like documentation. I was also often confused with the exercises instructions. -A: Be prepared to teach, no just read. In every section, I got something like "we do not have time to cover the topic A, so we move on" -A: -A: better time management, I think it would actually be more helpful to spend time more time on basics with going through examples and thorough explanations and time for questions than rushing through that we can cover all the topics that are planned (because the content is anyway on the page and you can just refer to it and if people are interested can have a look on their own and ask about it because there is the additional time to do so) -A:Quite time-constrained, maybe having a the course for 2 days in week for 3/4 weeks would be great! -A: I would have liked to see less reading and more interaction, more space for questions and active discussion on exercises. Sometimes how exercises were introduced was still unclear (but better than previous sessions). -A: Some discipline specific examples would be appreciated, for example with simulation data or codes -A: More interactive sessions or handsn exercises rather than reading (which can be pre-read before the lectures) -A: Really liked the group exercises, which we can increase in the future! What will we do(Act) [Teachers only]¶ -A: -A: -A: -A: -A: -A: -A: ## Confidence Report: (maximum 10min) You can leave when you are done. Give you confidence levels of the following statements, using this scale: - 0: I don't know even what this is about ...? - 1: I have no confidence I can do this - 2: I have low confidence I can do this - 3: I have some confidence I can do this - 4: I have good confidence I can do this - 5: I absolutely can do this! I am confidant that...: - I can put the code of a project into a Python package -A: 4 -A: 4 -A: 5 -A: 5 -A: -A: -A:4 - I can upload my Python package on PyPI -A: 4 -A: -A: 4 -A: 5 -A: 5 -A: -A:4 - I can methodically optimize the runtime speed of my code -A: -A: 3 -A: -A: 4 -A: 4 -A: 4 -A:4 - I can create a runtime speed profile -A: -A: 5 -A: 4 -A: 5 -A: 4 -A:4 -A: - I can read a runtime speed profile -A: 5 -A: -A: 5 -A: 5 -A: 5 -A: -A:4 - I am able to distinguish bad from good advice regarding runtime speed optimization -A: -A: 4 -A:4 -A: 3 -A: 4 -A: -A: 5 - I can mentalize the installation needs from the users' perspective: -A: 3 -A:4 -A: 5 -A: -A: 4 -A: 5 -A: - I can initialize a new project: -A: -A: 4 -A: 5 -A: 5 -A:4 -A: 3 -A: - I know the most important sections for a full public README: -A: 5 -A: -A: 5 -A: 4 -A: 3 -A:4 -A: - I can make an installation instruction for potential users: -A: 3 -A:4 -A: -A: 4 -A: -A: 5 -A: - I can make citation info: -A: -A: 3 -A: 3 -A: 3 -A: -A:4 -A: - I know how to find instruction of going to more sophisticated documentation: The course met my expectations: -A: -A: 2 -A: -A: 4 -A: 2 -A: -A:4 - I learned a lot of new things about software development as a process: -A: -A: 5 -A: 5 -A: 5 -A: 5 -A: -A:4 - I will use what I learned in my projects: -A: -A: 5 -A: 5 -A: 5 -A: 4 -A:5 -A: ## Extended questions (10 min) - Imagine you are boss. How would you improve the Programming Formalisms course? Do consider that if you want more of something, what would you want less of? -A: More:: Add some text about good practices about writing classes. Explain more with some examples about composition, inherence, etc. - Provide more links to video tutorials. - Creating video contents that students can watch to complement the training. Less:: Teachers reading what everyone at this level can read. Use the text as a guide. -A: **First of all I wanted to thank you all for this great course! All the following critics are just small to make the course even better.** There was a lot of group work where it was actually not needed, I don't need to be in a breakout room with someone just to ask questions, seems a bit unnecessary. Also an time expectation of the real group work and a better outline of what we should actually do would be great (for some of the tasks that is actually already very well implemented). Some of the topics are actually falling short, e.g. about classes/object oriented programming and modules I didn't really catch the grip and feel similarly unsure about it than before the course (also the course page is rather short and doesn't really provide further information). Time could definitely be saved when not only the pages get read to us and the teachers stumble upon mistakes but just by either reciting it shortly or letting us read ourselves. Also a proper flipped classroom could work, just tell us to read up on a topic the day before and then discuss it or do exercises (I mean we are all voluntarily taking this course and want to learn something, so I think it wouldn't be an issue to put the extra time in.) -A: I really enjoyed the course! Thank you all for that! But I learned more through the hands-on exercises than reading, so maybe I would arrange more group sessions where the teams worked together, so that they can fail and learn! Pushing them into the project first (maybe give them some resources to read on first) and then letting them review their project work would be my approach. Maybe also, ask the students to bring their own data (discipline specific data) and work on them and review them in group, so that students can understand how to use these tools/tips in their discipline data. -A: Thank you for the course. I think I would in general increase the prerequisites for taking the course to a higher level. I started the course with the exact python/git requirements as stated in the UPPMAX web page, but I still found some sessions quite hard - or maybe too advanced for my level, or that they served a purpose that is too advanced for what I am working on at the moment. I took the course early in my phd thanks to the suggestion of my supervisor and of a fellow phd student, but maybe it would have been more useful to take it with more pior experience in programming in general. That said, it was very useful to see how software development works in a formal way. It's super useful to see that there are guidelines/ good practises to be followed, which could be good to learn very early in my career. Also, I am very happy that I can go back to the course materiak and revise topics. What I personally found the most useful as a beginner was collaborating on git, understanding how to use tests and asserts to make code stronger from the beginning, continuous integration and classes. I wished we had seen more function design as well. Regarding teaching style, I really appreciated exercises, as they really help tpo stay focus. Sometimes I wished we had clearer instructions before each exercise, but I think this got better during the course. I also liked the video tutorials when available, as they helped a lot when a full example was needed before practising hands-on. What I think could be improved were some explanations and timing. Topics were often skipped, not covered or covered too fast. It may be good to reduce the course content a bit and focus on the most appreciated/needed sessions. Something I didn't understand fully was the purpose of having the 'weather project'. I guess it is to provide a full-cycle software development example, but since we ended up not really working on that, I would have rather had more small exercises, which help strenghtening the broad understanding. Last, I suggest adding a video tutorial on the use of VS code with git, and then always stick to that method. Or always work from terminal. It can become confusiong if people use different methods. -A: Thanks again to the team for assembling this introductory course, it’s a solid foundation and has definitely helped boost confidence in writing code with better practices, from design to deployment (or at least good enough to share :) ). If I were the boss looking to improve the course, I’d lean into what’s already working: the practical focus and hands-on approach. I’d want more time spent on real-world examples and code walkthroughs that show how formal concepts apply in actual development scenarios. That kind of context makes the theory stick. One small note: sometimes the lead instructor seemed a bit tired or rushed during sessions, which made it a little harder to follow along. Totally understandable—teaching is tough! Just wanted to share that in case it helps improve the experience for future learners. Overall, great job and much appreciated!

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully