Feedback 2021
Here is the written feedback from students when the course ran 2021, together with my comments.
My opinion about the course material (e.g. course literature, scientific literature, recorded lectures, web quizes, instructions for laborations).
The recorded lectures are good, but they need even more practical elements. HOW to actually implement things and give more examples that we can learn from. Most of the videos are WAY to long, its really difficult to find something at a later date. They should also be divided into theoretical and practical videos. The tutorials that were live in class should also be avaible as a video - they are by far the best way to learn in combination with the github code that gets updated each week. But we need even more examples on how to implement the hard stuff. When you have 0 experience you canst just GUESS on how to implement like csrf tokens or hashing. The lightsail video was the best one out of all of them.
As I've mentioned in the beginning of the course and have written in the Study Guide: the recorded lectures are theoretical on purpose, and I use the tutorials to show how to do things in practice. I could make pre-recordings of the tutorials too, but then I would never see you in a lecture hall 😢
No video is longer than an ordinary lecture, and they are intended to be watched just once (as an ordinary lecture), so I don't understand why the length of them is a problem.
Enough theoretical information on how to implement tokens and hashing is provided. To learn how to use these in practice, read the documentation for the libraries you are recommended to use (that documentation is enough for you to learn how to use them). Learning how to read documentation is part of the education of becoming a software developer. You might not like it, but learning that is something every software developer needs to do.
I like how the course material was on its own website, although it was a bit hard to navigate in it as website was lacking order. I always forgot where project writing rules are for example.
I myself can't imagine a better structure, and therefor can't do anything about this. Suggest how things should be improved, instead of saying why it is bad now, and I have an improvement suggestion I can reflect upon.
Good prerecorded videos and material on the course website. Useless tutorials.
I can't please everybody; many think the tutorials are so useful they should be recorded 🤷
Possibility to achieve the intended learning outcomes (through lectures, laborations, seminars, projects, assignments, literature, other teaching aids).
You need A LOT of help from the teaching aids solving the more difficult things and also just web programming in general. There is so much new things to learn and piece together. The possibility to achieve the intended learning outcomes goes down because of the time constraint. It takes so much time getting the project going that the last weeks is just way too much. I know personally that many students in the class had a hard time with dealing with stress.
Through the course I felt like a did learn a lot every week but at the same time it never felt enough to even pass this course. It just was a lot of information to take in for someone who has never programmed a website and it was very overwhelming and at times hopeless.
There were so much course material that were needed to be learned in great detail and there was not enough time to do so. After working on the project for a couple of weeks the coursecordinator could come up with a new way to implement something and say we need to use this new way. Which meant that the project needed to be reworked and this took a lot of time. The gradering criterias were a joke. There were always a feeling that everything needed to be perfect in the rapport or the project otherwise we were going to fail the course.
This year many more students had difficulties finishing the project on time and passing the written examination compared to previous years. I suspect it's because of Corona made it harder to learn the basics in year 1, which is now punishing them in year 2. On average (of the students submitting feedback), the students have put down 21.4 hours each week on this course, which still is less than expected 200 hours if they want to finish the course during only 8 weeks.
the coursecordinator could come up with a new way to implement something and say we need to use this new way.
Not sure what the student is referring to here. At the tutorials I have shown examples of how things can be implemented. I have never said "You have to do it exactly the way I do it". On the contrary, I rather show you the simplest way to do things, and the students themselves should try to use knowledge from previous courses to deliver an even better solution. Some mandatory things that have been clearly stated in the project work description since the start of the course has been covered in some of the tutorials at the end, and there I might have said "You also need this", but these things should not come as a surprise to the students.
the project needed to be reworked and this took a lot of time
To re-organize fully functional code should not take a lot of time if you know the basics in programming. This is also a very common task to do for programmers: first you find a solution that works, then you iterate and try to make the solution even better. No one gets the code 100% perfect on their first attempt, so get used to reworking your code.
I rather consider this to be a feature (good practice for you), than a bug, and if you think ahead on your own instead of just copying me, you can get it more right on the first attempt.
The gradering criterias were a joke.
I interpret this as the student think my grading guidelines were too demanding. I rather think the opposite. Many of the guidelines, such as:
- Indentation Convention
- Coding Style
- Naming Convention
- Mnemonic names
- Magic Numbers
- Implementation
Are fundamental things in programming everyone should get (very close to) 100% right. These guidelines shouldn't really need to be mentioned at all, but since I know that many students in the second year still haven't understood this, I mention these guidelines for them. But I do understand they are hard to achieve if one still struggles with the basics in programming.
The following guidelines:
- Database Design
- Report
Are based on pre-requisites, and nothing new in this course. I can accept the Report
guideline to be half-new for you, since most of you haven't written a report on a website before, but in my experience most students rather have more difficulties with the basic report writing part (using figure numbers, captions, proper headers, proper paragraphs etc.) than the website part.
The only grading guidelines covering what is new in this course are the following:
- Resources
- Validation
- Error Handling
- Graphical User Interface
- Semantic HTML
- CSS (does not even need to be covered)
- Security
And these are fundamental functionality for a website. I don't think I'm too demanding, especially not since you don't need to get a perfect score on each guideline to pass, and my demands are always lower than what's being accepted in the industry. How many companies do you think are willing to pay money for a website containing 2 security vulnerabilities? None, but in my course such a website can still be good enough to pass.
This worked really well in the course.
The live tutorial lectures together with the github code is where you actually learn things + explanations from the teaching aids. Most of the lecture videos on are really good, but watching several hours each day is not possible due to time constraints. They should be tagged with chapters at least. And contain more practical elements.
Using youtube as a video service. Really good.
tutorials
Improved the googling skill
the recorded lectures helped with learning new things because they could be rewatched
The tutorials are very good. The same goes for website where one can find the study guide, schedule and so on. But again, the tutorials were excellent and much needed!
Pre recorded lectures and other written course material.
I learned a lot and to build a Web application was fun.
I learned a lot, and the workshops/practical lessons were a good way to repeat what the pre recorded lectures was about.
The course has room for improvement in the following areas.
Too much information at once on the website, its so spread out that you aren't able to find what's actually important.
I can't imagine a better structure. One page for the study guide, one page with a list of all lectures, one page with all info about the written examination, etc. In what way is this not a good structure in which it's easy to find what you are looking for? Or, if the problem is that there are too much information, what information is not needed?
Last year I got feedback that the project was hard because the project instructions were too long/too detailed. They are long and detailed to make it easier for you to complete the project. It's a mystery to me how long and detailed text is harder to follow than short and non-detailed text.
Also The deadlines are hidden in the time plan. Report Writing should have its own option in the menu. (and the improve me page is broken)
I clearly explained in the beginning of the course that you need to scroll to see the Important column in the TimePlan, and you are clearly aware of it, so what's the problem? The assignment on Canvas also have deadlines. In my weekly announcements on Canvas I have also often reminded you about the deadlines. What is really the complaint/problem here?
Doing the Exercises were as waste of time during the first week, it caused the whole project to be late. You are not being told that if you don't start on your project at once there wont be enough time to begin the report writing in time for the feedback. If you haven't ever done html,css,javascript before then its difficult to just start the project. So of course you foolishly start with the exercises thinking you should learn some basic things before you start a whole project.
I'm sorry to hear you solving the exercises was a waste of time for you, but I do believe that most people learning HTML and CSS will appreciate the gentler start the exercises give compared to trying implement the project website directly. As you are saying yourself, If you haven't ever done html,css,javascript before then its difficult to just start the project.
, so you rather say having the exercises is a good idea? But you didn't like these specific ones? Or what? 😕
I have communicated that you are expected to start writing on the report from course day 3, and that you should continuously improve the report throughout the course as you progress with the implementation of your website. The deadline for the feedback on your report was at course day 25 (only counting weekdays). I don't understand the problem. I rather suspect the problem is that you didn't start writing on the report on course day 3, or that you didn't continuously improved it throughout the course as instructed.
The Tutorials should be recorded so you actually can learn from them, trying to make a website from listening to a monologue and trying to remember everything the teacher said when explaining is really difficult even if you try and keep up with note writing at the same time. And there are no comments in the uploaded code explaining things. Its difficult knowing in what order you need to do things when all the code is uploaded at once.
The goal with the tutorials is not that you remember everything I've said/done. The recorded lectures and the recommended reading is really enough for you to pass the project, but I have the tutorials as an extra learning activity, so you can see examples of how one can implement a web application in practice, and have an opportunity to ask questions.
The goal with the project is not that you should copy what I've done at the tutorials. At the tutorials I show you one way you can do it. The goal with the project is that you should think on your own to figure out the best way to do things. And the project instructions (consisting or several parts) clearly indicates in which order you can do things.
More examples with Handling errors for many different things.
I can't cover all possible error handling that exists. I show you a few examples of how you can do it, and after you have seen one example, you should be able to figure out on your own how you can handle other errors in similar of other ways. Again, the goal with the project is not to copy the things I have done at the tutorials, but for you to think on your own.
And I did show you two different ways to handle errors: put error messages in an array, or use booleans to indicate if an error (such as a database error) occurred or not.
The last two/tree weeks were literally hell, its way to much doing both the project, written exam AND finishing the report(and also trying to do the same in the other class). It has affected my personal life so much that I haven't had time to go grocery shopping, I've been having sleeping issues, difficulty to fall asleep and then also waking randomly being stressed. We have 2 courses which both are demanding in time BOTH courses should at most take up 40 hours together each week for 100% course speed. It has been more like 40 hours each. Attendance at lectures, labs + own time implementing and researching.
I'm sorry to hear that, but remember that not passing a course on the first attempt is not the end of the world, and you are not expected to pass all courses on the first attempt (CSN doesn't require you to have passed all the courses to get money from them, the school doesn't require you to pass all courses in year 1 to start year 2, etc.). Take it from me: when I was a student I managed to fail the written examination in two different courses 4 times before I passed them. But I managed to graduate in the end anyway, and I'm sure so will you!
planning and timing
The average number of hours put down in the course reported by the students were 21.4 hours/week. This is very closes to the expected 20 hours/week if you want to complete the course in 10 weeks. So you rather refer to in which orders things are introduced in the course, or what? I have no idea. If you give specific suggestions on how to improve the course, I can consider it. This feedback I don't know how to work with.
- Make the course easier
- The grading criteria are insane
- Too many requirements for a 7.5 academic points course
should show us how to do routers in the beginning, everyone i knew thought it was weird that we sat around week 7 writing things in app.js. it should have been earlier
Again, at the tutorials I show you examples. The project is not about copying what I've done at the tutorials, but to think on your own and create something better. I have never stopped anyone from splitting the code into multiple files. The recommended reading for the lecture "Express Basics" also explains how routers work in Express, so if you would have read the recommended reading, you would have known this much earlier than when I showed an example of it at the end of the course.
it costed a lot of time from doing trivial moving work writing in one big file was very time consuming aswell, (it takes time scrolling up and down, finding the right places)
When you realize you are doing things in a bad way (for example when it's being time consuming), then you should try to think on your own to solve that problem.
it would be nice if the physical lectures would have been recorded as well
some things were not explained in the course that the students had to find out themselves what was really hard
The only things I can think of are the things for a higher grade (which is written that you need to figure it out on your own since it's for a higher a grade), and when referred to using a library (in which case you should read the documentation for the library). Otherwise, what was not covered?
a basic input on at least how to start dealing with that problem would have been helpful
What problem?! I can't do anything with this feedback, what were you missing? And why aren't you asking for help during the course? Now when the course is over I can't help you.
It seemed like too much at once sometimes considering this is a course touching the “fundamentals”. Also, the teacher should maybe show multiple ways of solving a problem so that you do not have to copy and paste code and do it the exact same way (unless one would want that). There should be a way the teacher does it and maybe an optional way the teacher also shows so that the students get a grip of how everything is interconnected.
I don't want you to copy me. If I would have shown you all different ways to solve a problem, then when you face the same problem you would have to copy me. I want you to think on your own, that's why I don't show you all different ways to solve a problem, but rather only the simplest way. Then you should show me that you can think on your own and come up with an even better solution.
The instructions regarding the last parts of implementations of the project were lacking a lot in comparison to previous parts (e. g. “Security” part)
Yes. In the beginning, to give you a gentler start, you are "spoiled" with many detailed instructions. At the end, when you have learned more about the subject, the instructions are less specific to force you to do more thinking on your own, but the instructions are still detailed enough for you to be able to achieve the goal (with some thinking on your own). So, it's rather the instructions in the beginning that are "too good", and not the instructions at the end that are "too bad".
Other than that, great course and a fantastic teacher!
This was a very busy and stressful course. Ridiculous amount of hours were put in and I don't feel satisfying with my progress nor my project.
I don't get why we didn't learn about organising code in routers from the beginning.
We were told that the exam would be based on project work, well that was a lie 😃
No, that has never been my intention, and I have no memory of communicating that. What I probably have communicated (and which has been my intention) is that the project work primarily will examine your abilities to implement websites (i.e. to write code), while the written examination primarily is for testing your theoretical knowledge of how things work. I have probably also communicated that you most likely don't need to spend much time to study for the exam, since you will learn the theoretical stuff when applying it in practice while working on the project.
Some of you might have taken shortcuts and copy-pasted code in your project without understanding how that code actually works, and then you of course haven't learned the theory you are expected to know for the written examination, and need to study for that separately. But copy-pasting code without understanding how it works is of course something you should never do.
The idea of having a single opportunity to hand in the report to get a feedback was absolutely does not make any sense..
Each lab session you had was an opportunity to get feedback on the report, and in the project instructions you are reminded about this in 5 of the parts the project consists of...
There was to much to learn in just 8 weeks.
The course was so stressfull even though I spent 40h+ per week on the course. The amount of information to learn and take in made it hard to remember small details that the coursecordinator told in the beginning of the course and then never mention again.
On the question asked how many hours you put down on the course on average, the highest answer chosen by any student was 25 hours, so you're statement here is confusing to me. Are you exaggerating? Otherwise, and no offense, but you spending more than 40 hours each week on this course might rather be an indication that you are struggling quite a lot with the basics in programming, and not that the course itself is too hard.
As far as I know, all important things are written down on the course material page, so you should find them there. And if there is a detail you are missing, just ask? You meet a lab assistant and me each week? And I also usually answer email. I rather find this a problem with the student no asking for the help he needs, and not a problem with the course itself.
The overhanging feeling that everything needed to be perfect to pass the course increased the stresslevel even more.
As i've said before:
- everything does not need to be perfect to pass the project
- many things you consider me requiring to be perfect (such as using proper names on variables) is rather standard within programming, and not something you need to do extra work to achieve. For example, when reading a book, you expect the author to have used proper sentences, spelled the words correct, etc., right? Requiring that from an author is not asking for too much. Same goes for a programmer, but instead of sentences, etc. we use variables, etc.
- not passing a course on the first attempt is totally fine, don't freakout! There is a reason why you (usually) are offered three examination attempts each time a course run; all students aren't expected to pass the course on the first attempt.
It should be possible to pass a course without working so much that you pyshicaly deteriorate.
Lack of feedback (close to none) on a a report assignment that was supposed to be a feedback submission.
If you got close to none feedback, that probably means either:
- your report didn't contain many bad sections that I could give improvement suggestions on, or
- your report was quite bad in the beginning, I got the feeling that you hadn't made a serious attempt to write something good (for example if it contained many of the common mistakes I've mentioned), and the small amount of feedback you got is still very valuable to you, even if my feedback was just a single comment like "First word in a sentence should start with a capital letter", that feedback is extremely valuable to you, since I'm trying to teach you something you have failed to learn for 9 years in elementary school + 3 years at the "gymnasiumskola". But I'm not giving up on you!
My own reflections
I attended one lab session in the course. I think in total only 3-4 students attended that lab session, and I think only 1 student stayed all 4 hours. I don't know how well this represents the lab sessions in the course in general, but if students find this course really hard, I'm very surprised not more students come to the lab sessions and ask for help. I rather interpret students not coming to the lab sessions as the course is being too easy.
Many students seem to think they had to implement their project websites the precise same way as I showed you at the tutorials, and that they are not allowed to do it in any other way. I don't know where this idea came from, but next time I'll try to emphasize that this is not the case. I of course expect the opposite; student should show me they are able to implement something better than the most basic solution I show you.
Many students seem to think The teacher should how me how to do everything I need to do, then I just need to memorize how to do that and do it myself. For some subjects, this way of learning things by heart makes sense, such as when studying a language (e.g. Spanish), since you need to know by heart all the words in the language, the general grammatical rules, the exceptions to the grammatical rules, etc., to speak the language. But you are to become engineers, and for you it is instead more important to get good at problem solving. You don't need to learn and know 9000 Spanish words by heart, instead you will just need to know a few general things by heart, and then you will use/combine these to construct a specific solution to a problem.
For example, I can show you how to build a wooden desk using some wood, hammer and nails, but if you focus on memorizing the steps I take, then you have only learned how to copy me, and all you can do in the future is to build wooden desks. That would make you a machine, not an engineer. You should instead focus on learning what tools are available, what they are used for, see examples of how they can be used, etc., and then practice on how to apply the tools and material to build whatever you want. This way, you will be able to build a shelf, a chair, etc., with the same tools and materials, even through you haven't seen anyone build a shelf before.
It's the same thing with programming, but instead of wood, hammer and nails, we have programming languages, algorithms, data, etc. I could very well spend 45 minutes of a lecture to show you how to add pagination to a website, but then you would only know how to add pagination, and having that specific knowledge is not that useful nor impressive. What if someone in the future wants you to add modals to a website? Then you would have to reply I don't know how to do that, because the teacher never showed me how to do it. You basically won't be able to implement any new thing, only old things.
A specific example of this in the course is how middlewares can be applied. I've told you that whenever you copy-paste code, you are probably do something wrong. I showed you an example of this with sessions, and then I also showed you that we can use a middleware to make our session available to all views. All of you then faced the same problem again when you needed to add anti-forgery tokens. Here I could have told you to use a middleware again, but then I would simply had examined if you could follow my instructions. You had already faced this problem, and I had already shown a sample solution to it, so here instead you got a great opportunity to think on your own to solve the problem in a good way.
So, students studying to become engineers have to practice on coming up with solutions to problems they have never encountered before on their own to improve their problem solving-skills. Therefor I don't show you how to implement every little thing you might be interested in using. A good engineer have not memorized 1000 solutions to existing problems; a good engineer doesn't need to memorize a single solution to any problem, but have to be able to come up with her own solution to any new problem she faces.