Assistant Research Engineer (1-year contract), Centre for Computational Law

Singapore Management University| Date Posted: 27-Jun-2020
Save Job
Job Nature:
Position Level:
Job Category:
Bachelor's / Honours

Job Description

Help us build open-source tools and technologies that do for legal and qualitative reasoning what the spreadsheet has done for quantitative reasoning.

At SMU's research programme in Computational Law, researchers develop open-source languages and libraries to be shared on Github and used by a future generation of web and mobile apps. We have three to five years to accomplish this goal.

As a member of the team, you will have the opportunity to participate in software projects. This involves

  • learning foundational areas of computer science, including data structures, algorithms, programming language theory, and logic;
  • learning how to use third party tools, including editors, IDEs, databases, business process modelling software, programming languages, specification languages; and libraries;
  • evaluating competing software systems for suitability;
  • building infrastructure to enable application development;
  • managing yourself, and managing fellow team members;
  • engaging in product, project, and program management as needed;
  • reading books and consuming such other media forms about software development;
  • writing documentation such as user/developer-facing manuals, tutorials;
  • delivering community support to users and customers;
  • preparing presentations to represent the project before external audiences; and
  • writing user-facing applications throughout the "full stack".


Success metrics: You can measure your (external) success in this job by the number and quality of contributions accepted into the research programme's Github repositories. Numerous software development assignments will be available. You can measure (internal) success by how frequently you find yourself in a flow state; by how many new ways of thinking you have mastered; and by how well you can get computers to help you and other people achieve important goals.


Self-taught programmers and holders of non-CS qualifications are welcome to apply.

The following qualifications are an advantage:

  • You regularly program in at least one programming language. Programming languages include Javascript, Python, Ruby, Clojure, Reason, Scala, Scheme, Common Lisp, Haskell, Ocaml, Elm, and Prolog.
  • You have developed at least one piece of software that somebody else has used.
  • You are comfortable using the Unix shell or Windows Terminal with WSL.
  • You are able to independently learn technology from books and online courses (though you will be supported when you get stuck if you “ask questions the smart way”, as Eric Raymond and Eric Moen put it.)
  • You have previously asked, or answered, a question on a technical community support forum.
  • You have an account on Github or Gitlab.
  • Other people turn to you for help with technology, and I mean people besides family.
  • You possess the “5 Personality Traits Every New Programmer Should Have”, according to Patience, Courage, Passion, Creativity, Logic.
  • You also possess the “Three Great Virtues of a Programmer”, according to Laziness, Impatience, and Hubris.

Learning opportunities

During your time with us, you will be exposed to areas of computing that lie beyond web/mobile app development, data science, and machine learning. You will learn to see the world as a computer scientist does – in terms of logics, languages, and libraries – and acquire, on the job, many of the skills on Matt Might’s list of “what every computer science major should know”. Working with other junior and senior researchers, you will learn technologies and skills which will be valued across a range of future careers.

You will be exposed to an on-the-job crash course in computer science that includes Unix development; languages like Javascript/Typescript, Python, and Haskell; model-driven architecture with DMN; open-source culture; and cloud computing. You will get to observe senior engineers at work and learn from them. We work with many of the technologies listed below. In your cover letter, please list any items where you already possess some familiarity. You are welcome to add new keywords to better represent your skill set. We list these not as hard requirements but as examples of the things you will have the opportunity to learn.

Open-Source Software & Open-Standard Infrastructure Engineering: Internet infrastructure · Unix · Raspberry Pi · TCP/IP · HTTP(S) · XML · JSON · Schemas · YAML · Git · Github · REST APIs · RFCs · IETF · StackOverflow · Hacker News · Technical Writing · Developer Relations and Evangelism

Software Development: Test-Driven Development · Continuous Integration · Software Project Management · Agile / XP / Scrum · Pair Programming · Literate Programming · Unit Testing · Amazon Web Services · Docker · Full-Stack Development

Programming Languages and Frameworks: Javascript · ECMAscript · TypeScript · React · Node · Deno · Python · PHP · Perl · CoffeeScript · PureScript · Elm · Java · Clojure · Scheme · Haskell · OCaml · Common Lisp · Scheme · Unix shell · PowerShell

Documentation: ReStructuredText · LaTeX · Jekyll · Markdown · Org-Mode

Parsers, Compilers, and Programming Language Theory: Lex/YACC · alex/happy · Bison · CFGs · EBNF · BNFC

Company Overview
Singapore Management University