:: 800 Words

If you're a student who wants to learn more about DB and/or PL, here are some resources that will help you get into the area:

Coursework

  • CSE 305: Programming Languages
    This class introduces students to the fundamentals of functional programming and programming-language implementation

  • CSE 350: Advanced Data Structures and Indexes
    This course links CSE 220 and 250 to database systems, providing an introduction to database compilers and data structure use.

  • CSE 4/513: Theory of Programming Languages
    This course delves deep into the theory of programming languages, including semantics, type systems, and verification. It counts for your theory requirement!

  • CSE 443: Compilers
    This course introduces students to the fundamentals of designing and implementing a compiler

  • CSE 4/562: Database Systems
    This course introduces students to the core concepts that go into implementing data-driven systems

  • CSE 505: Fundamentals of Programming Languages
    This class is similar to 305, but a bit broader and faster paced.

  • CSE 605: Advanced Concepts in Programming Languages
    CSE 662: Languages and Runtimes for Big Data
    Project-centric courses for PL and DB respectively.

  • MTH 419: Introduction to Abstract Algebra
    Groups, rings, and other algebraic structures show up all over PL and DB.

CSE 302/303/402: Experiential Learning and Research Projects

UB offers an undergraduate depth in Experiential Learning and Research (ELR) to undergraduates in Computer Science. This sequence of courses offers students the ability to work in small groups for three semesters with a faculty member on a single, ongoing project. These projects are relevant to DBPL:

  • Choreographic Programming
    Mentor(s): Andrew Hirsch and Luke Ziarek
    Description: Choreographic programming aims to simplify distributed systems / concurrent systems programming by allowing a programmer to specify the system in its entirety - participants, their computations, and communication patterns. From this high level choreographic program, we can synthesize concrete implementations for each node in the distributed system or each thread in the concurrent system.

    The team will be responsible for expanding the capabilities of our compiler for a choreographic language. Students will start by learning choreographic programming and write test cases and sample programs in the language. Students will then build in syntax highlighting for both emacs and visual studio. Students will also have the ability to work on the back end, creating compilation support targeting LLVM, C, and/or native code.

  • PgAQP: a pluggable toolkit for approximate query processing in PostgreSQL
    Mentor(s): Zhuoyue Zhao
    Description: Approximate Query Processing (AQP) can speed up SQL queries with a trade-off in accuracy in relational database systems such as PostgreSQL. This is often useful for interactive data exploration and/or real-time data analysis workloads in real-world data intensive applications. This project aims to design a toolkit for providing AQP functionalities in PostgreSQL as a pluggable extension, pgAQP. In this project, you will work closely with other graduate students and gain hands-on experience with designing, prototyping and implementing new features or performance tuning for large codebases.

Degree Specializations

UB offers a range of specializations for the MS in Computer Science and Engineering. Please see the official CSE website for a full up-to-date list. The following are relevant to DBPL:

  • Database Systems
    What you will learn: Data models and query languages, distributed systems, database systems, and programming languages
    Where this specialization will take you: Big data engineering, analytics, and search technologies
    Courses:

    • Both of:
      • CSE 560: Data Models and Query Languages
      • CSE 562: Database Systems (Capstone course)
    • And any one of:
      • CSE 586: Distributed Systems
      • CSE 505: Programming Languages
  • Programming Language Design
    What you will learn: Programming languages and programming language theory
    Where this specialization will take you: Software architecture, compiler development, and academic research
    Courses:

    • CSE 505: Programming Languages
    • CSE 513: Programming Language Theory
    • CSE 605: Advanced Programming Languages (Capstone course)
  • Pure and Applied Logic
    What you will learn: Programming language theory, database systems, and the theory of computation
    Where this specialization will take you: Software architecture, compiler development, and academic research
    Courses:

    • CSE 513: Programming Language Theory
    • CSE 596: Introduction to the Theory of Computation
    • CSE 562: Database Systems (Capstone course)

Self-Directed Resources

  • Have a look at the projects page, and if you find something you think is neat, get in touch with the folks running it to see how you can contribute! (you are definitely allowed to do this :) )

  • You are also absolutely allowed to reach out to faculty (or students) who's work you think is neat! The most productive way to do this is to find something that they're working on that gets you excited, and then ask them questions about it.

  • Hang out in the Capen lab. There's usually some DBPLly folks there chatting about stuff!

  • Attend the DBPL Seminar