Thursday, November 24, 2022

UPLB Student Registration Systems: 1996-2022

(Please note that this post is just based on my recollection of events. Here's my 2012 post about UPLB student registration.)

I have been part of UPLB for more than 20 years already, both as a student and as a faculty member. I have witnessed two main modes of the student enrollment (aka registration), manual and automated. In this post I'll try to discuss the different systems I observed and experienced. I will not be specific about dates since I am not good with it. Let's get started.

Simply put, the registration process enables students to select the subjects they will take for the incoming semester. The official document that contains this is the Form 5. One interesting aspect of the registration process in UPLB is that there is no guarantee that a student will be able to get all the subjects he/she needs for the incoming semester. This is due to a lot of factors, e.g. limited number of slots per section, schedule conflict with other subjects, and seasonal subjects.  

When I was a student in the mid '90s, there was a hybrid enrollment process. Students submit a Write-In paper form that contains the subjects and sections they want to enroll for the upcoming semester. The Write-In form will be encoded to the computer and used as input to a FORTRAN program called REGIST, which was developed by Dr. Ricolindo L. Carino of the Institute of Computer Science (ICS).  To my knowledge, this process was in place until I graduated in 2002.

After graduation, I became an instructor in ICS where my colleague Rodolfo N. Duldulao Jr. (Duldz) started developing an in-house system to track enlistment to Computer Science subjects. The system used the Apache-MySQL-PHP tech stack for web apps. This in-house system became popular and was extended to provide an online mechanism for the Write-In process in the entire UPLB. This online system became SystemOne (S1). More features were eventually added to S1 which was deployed during registration period. Note that the initial course assignments in S1 were still generated by REGIST. 

REGIST attempts to "solve"  course/student assignment (or student sectioning problem as I formulated it in my MS thesis). It became an academic research topic for a few MSCS students. Approaches such as Tabu Search, Ant Colony Optimzation, Simulated Annealing, Genetic Algorithms, and Multiagent Systems(my study) were tried but they never really replaced REGIST.

S1 evolved to become the main system for online Write-In and eventually for enlistment of courses to serve the entire UPLB students. After Duldz left UPLB, another colleague, Rommel V. Bulalacao (Bulacs), took over the development and operations of S1. Bulacs was a volunteer developer of S1 while he was still a student. REGIST however remained to be the main system for automagically assigning students to classes. Several improvements were also made by Bulacs for S1v2. Dr. Carino still provided support, though limited, for REGIST through the Registrar's office. I also coauthored a short paper which identified the performance bottleneck in S1v2 prompting its rewrite to a more modern tech stack, Node.js. This rewritten version (S1v3) however was short-lived. 

When Alfredo E. Pascual became UP president, he initiated the e-UP program. There was a strong push to deploy a unified enterprise system to support all university operations, including registration. This led to the deployment of the Student Academic Information System (SAIS) in UPLB. Key persons in SAIS deployment in UPLB were Dr. Jaime L. Caro(ITDC) and Dr. Myrna Carandang(UPLB Registrar). SAIS is still the current system being managed and operated by ITDC with a local team in UPLB housed in the Registrar's Office. SAIS is more of a "shopping cart" application where students "add to cart" the subjects they want to enlist. There is no global course demand prediction as with the case of REGIST. This resulted to a lot of problems. One of which is that regular students were unable to enlist in subjects because there is no "hard constraint" to prioritize them. Another is that departments were not able to properly predict course demand to adjust their course offerings. 

I also recall a system being deployed in Graduate School by a team led by Mr. Li Bolanos. I don't have the details  about the system though but I think it was written using PHP and MySQL. 

More recently, under UPLB Chancellor Dr. Jose Camacho Jr., an ad hoc committee was formed to oversee the development and implementation of the UPLB DX Academic Management Information System to replace SAIS. The committee is chaired by my colleague who is also the University Registrar, Prof. Margarita Carmen S. Paterno (Marge). Other colleagues involved are Prof. Danilo J. Mercado (ITC Director), Prof. Reginald Neil Recario, and Prof. Monina Carandang. Mr. Li Bolanos is also a part of this team. A version of DX AMIS for Teacher's Prerogative (using PHP-Postgres on VPS) was deployed during the First Semester AY 2022-2023. However, SAIS is still the main app for registration.

All deployed systems, from S1 to DX AMIS, encountered availability problems during peak hours of the registration period due to large amount of network requests.

Tuesday, November 15, 2022

Reflections 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): 

  • 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 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.
  • 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". High grades will just be an end result in the pursuit of "learning" and "mastery". 
  • Feedback is not just the score students get from graded activities. 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.
  • 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 like it when students ask questions, even the simplest or 'stupidest' questions. 
  • 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 budgetary constraints. 
  • 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.
  • The only way I can help "slow" students is if they intentionally ask for my help. Otherwise they are on their own. 
  • I try to adhere to the ACM curriculum recommendations when creating and delivering course content. 
  • 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. 
  • Textbooks are important in my classes. I prefer to use free and open source textbooks. I give paper readings from time to time.

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 /var/run/ovn/openvswitch
   $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.

        $export HOST_IP=192.168.3.100

[5] Prepare the local.conf file as described in the doc.

[6] Edit lib/neutron_plugins/ovn_agent
Change OVS_RUNDIR=$OVS_PREFIX/var/run/openvswitch 
to OVS_RUNDIR=$OVS_PREFIX/var/run/ovn

[7] Unstack and Clean.

        $./unstack.sh
    $./clean.sh

[8] Stack. This may take a while so grab a cup of coffee.

        $./stack.sh
        
A successful installation after ~12 minutes!


[9] Launch an instance.




[10] TODO: Configure Floating IP addresses and add glance images.

Wednesday, January 12, 2022

Git Commit Messages

I've been using GitHub to host my codes for a long time already. However, I often get lazy and  just put "edits" in my commit messages. This is obviously a bad practice!

I decided to look around to learn more about how to write good commit messages. I came across these resources [1] [2] [3]. 

The following format looks good:

Commit Type(Scope): Subject Line

Body

Commit Types

  1. Feature
  2. Fix
  3. Style
  4. Refactor
  5. Test
  6. Docs
  7. Chores

Subject Line

Short text (less than 50 characters) that summarizes the commit. 

Body

This is an optional detailed description of the commit. Wrap at 72 characters.


References

[1] https://cbea.ms/git-commit/ 

[2] https://dev.to/wordssaysalot/art-of-writing-a-good-commit-message-56o7 

[3] https://dev.to/thelogeshwaran/how-to-write-good-commit-messages-714


Friday, July 9, 2021

Humans of Computer Systems

Professor Murat  has an interesting section in his blog called the Humans of Computer Systems. I've been thinking about documenting my own "history in computing/systems" so I decided to answer some of the questions in HCS.

Programming

How did you learn to program?

I first learned to program using programmable calculators which I borrowed from my rich high school classmates. I was amazed how using variables saves time when computing some formula. Some of my classmates even have graphing calculators. I usually borrow their calculator and the manual overnight to try it out. I then learned BASIC on my own when my father brought home an IBM PS/2 laptop. I learned other programming languages in school. 

Tell us about the most interesting/significant piece of code you wrote.

When I was in college and taking an assembly language programming course, I wrote a text editor in C, which I called ASMEdit.  It allows me to assemble and link inside the editor. For me, this was an interesting project since I learned how to use pointers to functions to implement the menu system. I also learned to call external programs, TASM.EXE and TLINK.EXE, inside another program. I also implemented syntax coloring for the assembly instructions. This project was developed for the MS-DOS operating system.

Who did you learn most from about computer systems?

I learned about computer systems in my undergraduate OS class, mostly by reading the dinosaur book by Silberschatz et. al. It was in this class that was able to use a Unix OS called Solaris running on Sun hardware. My undergraduate SP/Thesis adviser was a systems and networks guy so I also learned a lot from him. I even learned a lot more about systems when I switched to linux desktop starting with Red Hat 7.3. 


Who is the greatest programmer you met, and what is impressive about them?

Some of my college classmates were really good programmers. They can easily implement advanced data structures and algorithms, especially graph and network algorithms. There was no Stack Overflow then.

What is the best code you have seen?

Over time, I realized that there is actually no best code. I do admire readable and maintainable code. OS kernel source code is quite messy.

What do you believe are the most important skills to be successful in your field?

Desire to learn new things. Oral and written communication. Working in a team. Navigating the academic politics.

What quality or ability do you value most in a computer systems person?

The desire to learn and experiment or tinker with various things. The ability to "see" the big picture at the same time can work on the specifics. Courage to break things.


Personal

Which of your work/code/accomplishments are you most proud of?

I am proud that I was able to get tenure at the university. This gave me the freedom to work on various areas in computer systems that interest me without worrying too much about job security despite the low pay. The ICS-OS paper actually gave me tenure. I enjoyed working on it and using it in my classes.

What comes to you easy that others find hard? What are your superpowers?

Understanding systems. Connecting/integrating things together.

What was a blessing in disguise for you? What seemed like a failure at the time but led to something better later for you?

I was not accepted in the private company that I applied to after graduation. My rejection in that company led me to apply as an Instructor in the university since I also want to pursue graduate studies. 

What do you feel most grateful for?

I feel grateful for everything I have right now. 

What does your perfect day look like?

Learning something new. Helping some people. Exercising and playing sports.

What made you most happy in the last year?

I was able to survive despite the pandemic. Though anxiety kicks in from time to time.


Work

What was your biggest mess up? What was the aftermath?

Some colleagues were pissed when they lost internet access because my private cloud setup has an exposed DHCP server which assigned IP addresses to their machines. We were able to isolate and resolve the problem but it was already late in the afternoon.

What was your most interesting/surprising or disappointing interaction at work?

I need to babysit the son of my colleague on a weekend because he needs to argue/discuss with another colleague about the "draconian" network access filtering.

What do you like most about your job/profession?

The freedom to tinker. The opportunity to share what I know. The chance to mentor and help others. Working with smart people. Playing the publications game. Navigating academic politics.

What would be the single change that would improve your work environment most?

Improving the research culture. Most of my colleagues are great teachers but they disregard the research aspect of the profession. CS is a fast-changing field. We need to keep up with the advances.


Technical

What do you think are the hardest questions in your field?

System reliability and performance. Ethics. Should we build this system because we can?  Is there one operating system to rule them all?

What are you most disappointed about the state-of-the-art in your field?

Sometimes the state of the art is just an incremental step or just scaling up. 

What are the topics that you wish received more attention? What do you think is a promising future direction in your field?

System reliability and performance. Ethics. 

What is your favorite computer systems paper? Why?

*XEN and the Art of Virtualization *A view of cloud computing *MapReduce: Simplified Data Processing on Large Clusters

I reread these papers from time to time.


Story

Is there an interesting story you like to tell us?

Yes.

Tell us your story.

I wrote an EXE non-overwriting computer virus bundled with ASMEdit I described above. My classmates and instructor who copied the program had no idea of the presence of the virus. The virus just replicates though, there is no destructive payload. AV then were signature-based so they never detected the virus I wrote.

Rant your heart out.

We are in a research university. Why are we not reading at least one research paper per week? :)