News Archives - Dr. Paulo Garcia /paulogarcia/category/news/ ÐÓ°ÉÔ­´´ University Thu, 15 Oct 2020 14:25:45 +0000 en-US hourly 1 https://wordpress.org/?v=6.3.1 Using AI, Canadian city predicts who might become homeless https://www.reuters.com/article/us-canada-homelessness-tech/using-ai-canadian-city-predicts-who-might-become-homeless-idUSKBN27013Y#new_tab?utm_source=rss&utm_medium=rss&utm_campaign=using-ai-canadian-city-predicts-who-might-become-homeless Thu, 15 Oct 2020 14:25:45 +0000 /paulogarcia/?p=246 Interview with “With a Science degree” https://withasciencedegree.com/2019/09/23/paulo-garcia/?utm_source=rss&utm_medium=rss&utm_campaign=interview-with-with-a-science-degree Fri, 25 Sep 2020 21:29:48 +0000 /paulogarcia/?p=242 Making the most of online learning https://newsroom.carleton.ca/story/carleton-instructors-making-the-most-of-shift-to-online-learning/?utm_source=rss&utm_medium=rss&utm_campaign=making-the-most-of-online-learning Mon, 31 Aug 2020 20:23:27 +0000 /paulogarcia/?p=228 Making Health Social: Crowdsourcing Real-Time Wearable Tech Data for Pandemic Response https://newsroom.carleton.ca/story/crowdsourcing-social-wearables/?utm_source=Homepage&utm_medium=Spotlight&utm_source=rss&utm_medium=rss&utm_campaign=making-health-social-crowdsourcing-real-time-wearable-tech-data-for-pandemic-response Fri, 28 Aug 2020 13:15:11 +0000 /paulogarcia/?p=226 How to view programming languages /paulogarcia/2020/how-to-view-programming-languages/?utm_source=rss&utm_medium=rss&utm_campaign=how-to-view-programming-languages Wed, 26 Aug 2020 01:56:25 +0000 /paulogarcia/?p=221 I often hear views such as “language A is better than language B” or “I don’t like programming in this language, I prefer that other language”. There is a right way of comparing languages, and there are many wrong ways: for example, comparing Java to C makes no sense: it’s the proverbial apples and oranges problem. Let’s elaborate.

A programming language is a tool. Like any other tool, it’s built for a specific job. One can (more or less) safely compare languages built for the same job: for example, Java and C#. Comparing Prolog and Javascript, on the other hand, makes no sense: one is a language for logic programming and inference, whilst the other is a language for web development (the cynic in me really wants to make the joke “whilst the other isn’t even a language”, but I’ll abstain from such comments). If you say “I like Javascript more than I like Prolog”, you’re not making a case about the languages: what you’re really saying is that you like web development more than you like logic programming. It’s a statement about the job (the application domain, to be more precise), not about the language. Certainly, there are syntactical, semantic and idiomatic aspects of languages that appeal to us more than others: and in that regard, we can compare, within the same domain.

C is a “difficult” language, because it is very easy to make mistakes, typically through pointers and dynamic memory (segmentation faults anyone?), precisely because it is built for direct hardware manipulation: and those features are essential for hardware access. That’s the reason C is still widely used as a systems programming language (albeit Rust is starting to become the first serious contender for the throne). Its cousin, C++, combines that expressive power (and associated dangers) with the encapsulation power of Object Oriented (OO) programming, making it ideal for large systems close to the hardware level (for example, for Operating System development). If you’re working above the hardware details, don’t use C! There are better languages for that, because the domain is different. On any type of programming above a general purpose OS, Python or Go do a much better job.

Why should we learn multiple languages, and embrace them as unique (except Javascript of course), rather than look at them as inferior to our favorite language? For two reasons. First, every language we learn becomes another tool; a tool that opens the door to a new domain. If you’re a Java programmer, learning a systems language unlocks hardware access for you. Second, every time we learn a new idiom (be it a paradigm, a design pattern, or simply a clever algorithm) it makes us better programmers in every other language we know. Everyone should be familiar with at least the basics of functional programming (either with Haskell, OCaml, one of the many dialects of Lisp, etc.) because learning code in a functional style makes us better programmers in imperative and OO programming. In my specific case, for example, I now remember functional programming principles whenever I’m programming in C (where I spend most of my time), and I avoid shared global state much better than I used to: my functions are more re-usable, more easily refactored, and my code is less likely to break.

By all means, choose a favorite application domain: most of us tend to have one. Master the languages purposely built for that domain. But don’t let those languages and your affection for them stand in the way of writing better code, for more applications. More importantly, don’t let misconceptions about apples and oranges get in the way of ideas for improving tomorrow’s languages and their users.

]]>
Humane teaching during a pandemic /paulogarcia/2020/humane-teaching-during-a-pandemic/?utm_source=rss&utm_medium=rss&utm_campaign=humane-teaching-during-a-pandemic Fri, 14 Aug 2020 21:04:42 +0000 /paulogarcia/?p=218 Over the summer, I’ve been talking occasionally with undergraduate students. When asked about their views and concerns about the upcoming Fall term (which in our University, will be fully online), most of them replied that they’re afraid of regular synchronous commitments (they didn’t necessarily use the word synchronous, but typically framed it as “live, scheduled lectures”).

Many of these students are either:

-Working part-time during day hours, because they, one or both parents lost jobs due to COVID-19
-Caring for someone at home
-Sharing limited bandwidth and computing devices with family members working from home
-In timezones that make it challenging to operate under University hours

I’m by no means an expert in pedagogy, and will not discuss the merits of synchronous or asynchronous delivery: people that know far more about it than I do have done that. Honestly, I think synchronous or asynchronous delivery does not matter much, as long as we do two things:

1-Make materials available asynchronously (you can teach synchronously and record for students to peruse later, or at least share slides and other materials if you don’t want a recorded video of you teaching).
2-Do not mandate attendance (and please don’t give marks for attendance, which is even worse, and in my opinion one of the worst sins of teaching in general, as it promotes a mindset of grades for jumping through hoops, rather than for learning).

Just doing these two things ensures that we don’t leave anyone behind (at least for the cases mentioned above) due to the unusual
circumstances.

Assessment (e.g., midterms) may, by its nature, only be offered synchronously, but these would be isolated events for which students can prepare in advance (arranging for time off work, etc.); not recurring events every week.

In conclusion, I’d like to frame teaching this term not as “synchronous versus asynchronous” delivery, but rather as “teaching such that every student has an asynchronous option to fall back on, if required“.

A potential counter argument to this thesis is: “students are expected to be full time students, available during the designated hours”. This is technically true. It’s also a position that hurts the most vulnerable and affected students.

I believe, in light of current events, we can take more understanding positions.

]]>
Ghost Protocol: the U.K.’s government latest attack on privacy https://theconversation.com/u-k-proposal-to-bcc-law-enforcement-on-messaging-apps-threatens-global-privacy-118142#new_tab?utm_source=rss&utm_medium=rss&utm_campaign=ghost-protocol-the-u-k-s-government-latest-attack-on-privacy Thu, 04 Jul 2019 21:54:13 +0000 /paulogarcia/?p=202 Don’t trust your hardware: Why security vulnerabilities affect us all https://theconversation.com/dont-trust-your-hardware-why-security-vulnerabilities-affect-us-all-105773#new_tab?utm_source=rss&utm_medium=rss&utm_campaign=dont-trust-your-hardware-why-security-vulnerabilities-affect-us-all Tue, 30 Apr 2019 21:28:22 +0000 /paulogarcia/?p=158 How to train 21st century engineers for tech discoveries https://theconversation.com/how-to-train-21st-century-engineers-for-tech-discoveries-109414#new_tab?utm_source=rss&utm_medium=rss&utm_campaign=sample-news-post Tue, 23 Apr 2019 18:36:59 +0000 /paulogarcia/?p=124