About Us
Singapore Management University is a place where high-level professionalism blends together with a healthy informality. The 'family-like' atmosphere among the SMU community fosters a culture where employees work, plan, organise and play together - building a strong collegiality and morale within the university.
Our commitment to attract and retain talent is ongoing. We offer attractive benefits and welfare, competitive compensation packages, and generous professional development opportunities - all to meet the work-life needs of our staff. No wonder, then, that SMU continues to be given numerous awards and recognition for its human resource excellence.
Job Description
You may be asked to conduct use-inspired research at the direction of the Principal Investigator. This includes:
- reading academic papers, standards publications, and related material such as blog posts and presentations;
- coming up to speed in fields which may be new to you, such as computational linguistics, mathematical logic, programming language design, formal verification, and model-based architecture;
- reading (and updating/commenting, relevant) existing software documentation;
- creating presentations, video recordings, walkthroughs, etc. to document and explain research work done;
- writing (and presenting, if so decided by the PI) academic papers and materials for publication; and
- documenting in a sufficiently-detailed manner so as to share what you've learned.
You will be expected to participate in software development; this includes:
- learning how to use third party tools, including editors, IDEs, databases, business process modeling software, programming 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 actual user-facing applications throughout the "full stack",
in each case, documenting, reporting, and/or presenting the same in clearly and efficiently, both internally and externally.
Qualification & Skills
Researchers under the Programme should possess both mastery of their academic speciality, and demonstrated practical experience producing and supporting high-quality open-source code through community engagement across multiple media. Candidates must have Bachelor's, Master's, Ph.D., or alternative qualifications in computer science, software engineering, (symbolic) artificial intelligence, computational linguistics, or formal methods.
Fluency in multiple natural languages, and any experience with law, are a plus.
Minimum Qualifications
Open-Source Software & Open-Standard Infrastructure Engineering
- Internet: Unix, TCP/IP, HTTP(S), XML, JSON, Schemas, YAML, Git, Github, Technical Writing, Developer Relations and Evangelism
Parsers, Compilers, and Programming Language Theory
- Lex/YACC, alex/happy, Bison, CFGs, EBNF, BNFC
App 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
- Preferred: Haskell or OCaml. Python.
- Possible alternatives: Common Lisp, Racket, Scheme, Javascript / Typescript / Node.
Computational Linguistics - Natural Language Generation
- Computational Semantics (in Haskell, Prolog, or Lisp), Montague Semantics, Grammatical Framework, Text planning, Surface realization
- Familiarity with: WordNet, FrameNet, SenseNet, Controlled Natural Languages, Attempto Controlled English, ACErules
Formal Verification and Specification Languages
- Some familiarity with any of: TLA+, Alloy, IVy, B Method, Z notation, VDM++, LTL
Preferred Qualifications
Theorem Proving and Strongly Typed Languages:
- CoQ, Agda, Idris, Lean Prover, F*, Advanced Haskell (Template etc), OCaml, Elm, Isabelle/HOL, StrangeLoop, Pony
Model Checkers and SAT/SMT solvers:
- Z3, PAT, SMTlib, NuSMV, SPIN, Sentient
IDEs, Language Workbenches, and PLT frameworks:
- K Framework, JetBrains MPS, IDEs (Vim, Emacs, Visual Studio Code, Atom, Sublime Text), Language Server Protocol
Rule Systems and Logics
- Formalization of Contracts, Rules, and Business Logic: Akoma Ntoso, LegalRuleML, Petri Nets, Drools, iLog, OPA, Neota Logic, Constraint Handling Rules, ICAIL, JURIX, RuleML+RR
- Model Driven Architecture: UML, BPMN, DMN, OCL, SBVR, Statecharts, Activity Diagrams, Parnas Tables
- Logics: Hoare Logic, Kripke structures, Modal mu-calculus, Dynamic Logic, Deontic, Temporal, and Epistemic modals, Situation Calculus, Process Calculi, Multivalent logics, Defeasible Logic, BDI, Abductive Logic, F-Logic, Intuitionistic, Non-monotonic Logics, Skolemization, Well-Founded Semantics
Good Old-Fashioned Artificial Intelligence and Semantic Web
- Knowledge Representation and Reasoning: Lisp, Prolog, F-Logic, Flora-2, Datalog, Answer-Set Programming, Defeasible Logic, Expert Systems, DocAssemble, lps.doc.ic.ac.uk
- Semantic Web and Ontologies: RDFa, RDFt, RDF, RIF, SWRL, OWL, Cyc, KBpedia, SUMO, UFO, Protégé