This page lists all articles on the blog ordered by topic, with the exception of announcements regarding talks, papers, or internship opportunities.
Last update: 26 January 2020
Computer Science and Programming
Getting started:
Three plus One Programming Languages to Learn
The tedium of Scratch can’t be good for kids
How to Get Started With Java (as a Beginner)
No, Java is not a good first programming language
Allen Downey’s Think Python: How to Think Like a Computer Scientist
Installing Agda in OS X 10.9
Implementations:
Relational division in SQL the easy way
Finding an Eulerian Path [Python]
Think Python Solutions on Github
Backtracking Search in Python with Four Queens
Poor Treatment of Recursion in Introductory Textbooks, and a Counterexample
An Example of the Beauty of Haskell
Implementing the game 2048 in less than 90 lines of Haskell
Writing an Interpreter with BNFC and Haskell
Finding All Eulerian Paths [Haskell]
The higher-order function ‘fold’ [Haskell]
Gödel’s System T in Agda
An FFT (Cooley–Tukey) for a synchronous dataflow extension to Feldspar [Haskell]
Compiling Agda to System Fω in Theory (BSc thesis)
Cryptographic Block Ciphers in Functional Programming: A Case Study on Feldspar and AES
PLC Factory – Automating Large-Scale PLC Development
Advent of Code (2015) Solutions
Latency and Throughput in Center versus Edge Stream Processing (MSc thesis)
Contraction Clustering (RASTER): paper and reference implementations
Experience reports:
Retrospective: Software Engineering Summer Internship (2015) at Jeppesen Systems AB in Gothenburg
A graduate’s perspective on the Software Engineering and Management Bachelor’s program at the University of Gothenburg
Human-Computer Interaction:
When did progress bars become extinct?
Discussion:
Diceware, Security Theater, and “Women in Tech” Propaganda
A Simpler Solution to the Dining Philosophers Problem
System Administration
Building a Budget PC
Installing Linux via USB
Noppoo.eu looks like a Scam to me
A Quick Fix to properly set up Virtualbox
Showing hidden files in Finder in Apple OS X 10.9
Gaming
Metacritic and the Legitimacy of Video Game Journalism, Part I
Metacritic and the Legitimacy of Video Game Journalism, Part II
Programming Game Review: SpaceChem (2011) by Zachtronics Industries
MOOCs/Online Education
Thoughts:
A Critical View on Coursera’s Peer Review Process
Automatic Grading of Code Submissions in MOOCs isn’t Perfect Either
Replicating a BSc in Computer Science through MOOCs
How Coursera pesters “learners” who are not interested in paying for a PDF certificate
Computer Science Resources for Autodidacts
Greed has ended the promised MOOC revolution
The Value Proposition of the Georgia Tech-Udacity Online Master of Science in Computer Science (OMS CS)
Reviews:
Review: Internet History, Technology and Security — Coursera
Review: Think Again: How to Reason and Argue — Coursera
Review: Introduction to Databases — Stanford Class2Go
Review: CS101: Introduction to Computer Science I — Saylor Foundation
Review: Games without Chance: Combinatorial Game Theory — Coursera
Review: CS102: Introduction to Computer Science II — Saylor Foundation
Review: CS107: C++ Programming — Saylor Foundation
Review: CS201: Elementary Data Structures — Saylor Foundation
Review: An Introduction to Interactive Programming in Python — Coursera
Review: Introduction to Systematic Program Design – Part 1 — Coursera
Review: Algorithms: Design and Analysis, Part 1 — Coursera
Review: Principles of Computing — Coursera
Review: Introduction to Functional Programming (edX)
Coding Bat: Java
CodingBat: Java Solutions (Introduction)
CodingBat: Java. Warmup-1, Part I
CodingBat: Java. Warmup-1, Part II
CodingBat: Java. Warmup-1, Part III
CodingBat: Java. Warmup-2, Part I
CodingBat: Java. Warmup-2, Part II
CodingBat: Java. String-1, Part I
CodingBat: Java. String-1, Part II
CodingBat: Java. String-1, Part III
CodingBat: Java. String-1, Part IV
CodingBat: Java. Array-1, Part I
CodingBat: Java. Array-1, Part II
CodingBat: Java. Array-1, Part III
CodingBat: Java. Logic-1, Part I
CodingBat: Java. Logic-1, Part II
CodingBat: Java. Logic-1, Part III
CodingBat: Java. Logic-2
CodingBat: Java. String-2, Part I
CodingBat: Java. String-2, Part II
CodingBat: Java. String-3, Part I
CodingBat: Java. String-3, Part II
CodingBat: Java. Array-2, Part I
CodingBat: Java. Array-2, Part II
CodingBat: Java. Array-2, Part III
CodingBat: Java. Array-3, Part I
CodingBat: Java. Array-3, Part II
CodingBat: Java. AP-1, Part I
CodingBat: Java. AP-1, Part II
CodingBat: Java. AP-1, Part III
CodingBat: Java. Recursion-1, Part I
CodingBat: Java. Recursion-1, Part II
CodingBat: Java. Recursion-1, Part III
CodingBat: Java. Recursion-2
CodingBat: Java. Update 2013.1
CodingBat: Java. Update 2013.2
CodingBat: Java. Map-1
CodingBat: Java. Map-2
Coding Bat: Python
Coding Bat: Python Solutions (Introduction)
Coding Bat: Python. Warmup-1
Coding Bat: Python. Warmup-2
Coding Bat: Python. String-1
Coding Bat: Python. List-1
Coding Bat: Python. Logic-1
Coding Bat: Python. Logic-2
Coding Bat: Python. String-2
Coding Bat: Python. List-2
Why doesn’t my code work? What happens to the all the other numbers in the array when I assign the value nums[i] to nums[j]? Do they all shift one place to the left?
public int[] evenOdd(int[] nums) {
int j=nums.length-1;
for (int i=0; i<nums.length; i++){
if (nums[i]%2!=0) nums[j]=nums[i];
j–;
}
return nums;
}
No, the numbers don’t shift to the left. Instead, you’re overwriting that particular element in the array. Your code doesn’t work because you’re filling nums[] with odd numbers starting from the back. However, you don’t retain the values you overwrite. Assume your array is [3,3,3,2,2,2]. Your code seems to lead to [3,3,3,3,3,3]. Do you see the problem?
By the way, next time please comment in the section that contains the Coding Bat problem you’d like to discuss.
Thank you for your kind, informative response, Gregor. My apologies for writing my question in the wrong place. I will be more careful in the future!
Best,
Joseph