Sunday, May 14, 2023
MS Computer Science (MSCS) program at UPLB (Part 1)
Sunday, March 19, 2023
How to succeed in group programming projects?
Group programming projects will test a student's technical skills and ability to work in a team. This post will discuss how to succeed in group programming projects.
The Answer: Choose an excellent group leader!
In group projects, the role of the group leader is very important. Although technical expertise is a desired quality for a group leader, leadership skills, project management skills, and communication skills are more important to ensure the success of the group project. (I am speaking from experience here because I've always been selected as the group leader when I was an undergrad :) ).
Common issues in group projects
* Schedule - cannot find a common time to meet and work on the project
Role of the group leader
In general, the role of the group leader is to handle the issues mentioned above.
* Facilitate communication - identify channels of communication, set meetings, follow up, etc.
* Assign tasks - based on the abilities of the members, members should be honest about their technical skill level
* Monitor progress - updates from group members, can be done through tools
* Provide assistance - technical, etc.
* Manage conflicts - need to make decisions at some point
A group member should not accept the nomination as group leader if he/she does not possess these qualities.
* Collaborative - group leader should ensure that every member of the team can contribute, no matter how small the contribution is
* Adaptable - be able to make adjustments based on circumstances
* Positive and cool attitude
* Accountable - and responsible
Of course without the contribution of group members the project will not move forward. (May not always be true because a highly technical, grade-conscious, and introvert group leader may 'make buhat' the group but secretly fail everyone else in the team in the peer eval :) ).
* Seek help(of prof) if needed
Appendix: Example work log
(Photo by Annie Spratt on Unsplash)
Thursday, November 24, 2022
UPLB Student Registration Systems: 1996-2022
Tuesday, November 15, 2022
Thoughts on Learning and My Teaching Philosophy
I've been teaching in UPLB since 2002 (that's >20 years already!). I haven't really put into writing my thoughts about learning and my teaching philosophy. Here are some items (which will be updated from time to time because things happen and change):
- Since this is UPLB, I assume that my students are really smart (but some will be "slow"). Of course, some students will be smarter than me. This is one reason I like teaching here.
- Since I teach Systems subjects, I want my students to work on hands-on activities and experiment (build, break, and rebuild stuff).
- I don't believe in "learning styles". I believe that students can learn any topic (no matter what their learning styles are) if they really give time and effort to learn the topic. They can always ask for help on difficult topics. Even if I am a boring lecturer, for sure they will learn something.
- My role is just a facilitator of learning (and possibly a source of inspiration), not the source of knowledge. Students are free to explore other knowledge sources outside the syllabus and the classroom. Using AI Tools is welcome in my classes.
- I don't tolerate academic dishonesty. It is better for students to fail (then retake the subject) than to cheat in graded activities such as exams. However, I don't police students on this matter. For me policing is a waste of my time. I have high respect for students who fail because they did not resort to academic dishonesty. Also, a student can just drop the course if he/she is failing rather than resort to academic dishonesty.
- High grades matter only if students will apply to grad school or apply for a teaching position after they graduate. Students should aim for the "learning" and "mastery" as well as skills development. High grades will just be an end result in the pursuit of "learning" and "mastery".
- Some students are "grade conscious" which means they want/beg for a grade of 1.0! If they want high grades, sure I can give it to them as long as they turn in excellent work. This is the reason I give bonus points, though some students don't avail of these bonus points.
- Feedback is not just the score students get from graded activities (wrongly termed as "learning assessment"). If students code worked on the given test cases, that is already feedback. If a student wants feedback, he/she needs to talk to me directly during class and consultation hours. The only way I can help "slow" students is if they intentionally ask for my help. Otherwise they are on their own.
- Not all students currently taking BSCS are really interested in computing. I am biased towards students who are passionate about computing. Thus course materials, difficulty, and delivery are more geared towards challenging these passionate students to the best of my abilities.
- I want my classes to be "world class", thus I try to adhere to the ACM curriculum recommendations when creating and delivering course content. I also consult course websites of other top universities and incorporate topics and approaches in my syllabus.
- I try to focus on teaching the fundamentals. However, computing is a rapidly evolving field so I try to teach the state of the art given the resource constraints and bureaucracy.
- Textbooks are important in my classes. I prefer to use free or open source textbooks. I give paper readings from time to time to encourage students to do research.
- I encourage students to ask questions, even the simplest or 'stupidest' questions.
- I prefer to create videos that are more than 15 minutes. TL;DR/TL;DW is not for me and should not be for my students. I don't want my students to be take 'shortcuts'.
Saturday, August 27, 2022
DevStack on Ubuntu 20.04
I need a small IaaS cloud infra for my CMSC291: Modern Distributed Systems class this semester so I decided to set up an OpenStack instance on one of SRG's servers running Ubuntu 20.04. I have used OpenStack in the past so I'm quite comfortable using it.
What is DevStack?
"DevStack is a series of extensible scripts used to quickly bring up a complete OpenStack environment based on the latest versions of everything from git master. It is used interactively as a development environment and as the basis for much of the OpenStack project’s functional testing."
- https://docs.openstack.org/devstack/latest/
[1] I thought the process will be straightforward but unfortunately minor tweaks were needed. Below is the configuration of the host.
[2] This is the commit hash that worked for me, make sure to checkout this particular commit : d9e2d10d28ebc70129ed90ac9afe11591e7bb7d3
[3] A few directories need to be removed:
$sudo rm -fr /var/run/ovn
[4] Get the IP address of the host (using ifconfig) and export it as HOST_IP environment variable. Let's say the IP address is 192.168.3.100.
[7] Unstack and Clean.
$./clean.sh
Friday, February 18, 2022
YouTube channels/playlists for systems and cybersecurity topics
- Distributed Systems by Lindsey Kuper
- Distributed Systems at MIT
- Virtualization and Cloud Computing by Mythili Vutukuru
- Distributed Systems Reading Group
- Distribute My System
- Jim Kurose's Networking Videos
- The Networking Channel