Course Containers
The course supports the two following options. You can choose either.
- Local (Docker) containers: This option is recommended if you prefer to keep all your work on your personal laptop. Then, the entire course computing infrastructure will run as “containers” on your laptop, which you will have access to any time, even without an Internet connection. Setup instructions:
- Install Docker on your laptop (there is no need to create a Docker account or sign in). If you have previously installed it, update it to the newest version.
- First, follow instructions to create local containers.
- Second, follow instructions to ready your containers for the course.
- Third, follow instructions to set up Visual Studio Code to work with your containers.
- Duke OIT containers: This option is available to everybody. Here, the containers run remotely on Duke OIT servers. You don’t need to install anything on your computer, and you can work on your containers from any computer with a web browser. However, you won’t be able to work offline without an Internet connection. Setup instructions:
- First, visit Duke OIT Container Manager site and reserve a CS316/516 container. Once reserved, open the CONTAINER CONTROLS info pane, and you will see a login button that lets you log into your container shell through your browser. There is also a lot of other information that will be useful for running your code and/or accessing various software installed on the course container; they will be relevant later.
- In case you experience any connection problems (especially when the container is first created), requesting a restart will oftentimes solve the problem.
- Second, follow instructions to ready your container for the course.
- Third, follow instructions to set up Visual Studio Code to work with your container.
Linux Basics
Your container runs Ubuntu, a popular distribution of the open-source Linux operating system, the predominant operating system for servers. You will often interact with the operating system using a command-line interface in this course. Please check Linux Help and make sure you are comfortable with Linux basics.
Data Management/Processing
- Relational data: tips on radb (Relational Algebra Interpreter) and PostgreSQL.
- Semi-structured data: tips on XML and MongoDB.
- “Big” data: Spark Tips
Full-Stack Application Development
Note: There are many, many different platforms and frameworks for full-stack development. You should consult the standard project description itself for what the course staff supports (see project descriptions posted under Schedule). The following resources serve as supplemental learning materials but may not directly apply to the standard project.
- The standard project for CompSci 316/516 during Fall 2021 – Fall 2025 was “Mini-Amazon,” a full-stack web app that mimics Amazon. Although that project is being retired, you can still refer to its skeleton codebase and the associated tutorial as another example of learning full-stack development.
- Another Flask-based example can be found in the course repo: Flask by Example. This example is simple yet fully functional.
- Duke OIT Co-Lab offers a wealth of relevant Roots courses/tutorials/workshops as well as office hours. The offerings vary and may include Web and/or app development. Check in advance as signups may be required.