Due:

  • Task 1: Friday, January 22, midnight
  • Task 2: Monday, January 25, 9pm

Submission: Via https://handins.ccs.neu.edu/courses/130

Background

Your group is to implement a project from scratch for a new customer, the Khoury College of Computer Sciences at Northeastern University. (Yes, they teach you how to program there but apparently they can’t produce software for their own needs. These professors …)

The project has no connection to any pieces of the existing code base in your company, meaning you are free to choose the “best” programming language. In this day and age, programming language tends to include the entire ecosystem: include libraries, web-based library repos, IDE, community, books (like “Effective Copy and Paste from StackOverflow”) and so on. So feel free to interpret the term tightly or loosely.

Here are the project constraints. The target platform are the Linux machines provided by your customer. The chosen language must thus satisfy two deployment constraints:

  1. the code will be deployed on the Linux lab machines of Khoury College1, and
  2. the code should run without any real changes on your own computer/OS as well so that you have a proprietary development machine.

Additionally, it must come with support for:

  • Unix-style standard-in (STDIN) and standard-out (STDOUT) I/O support;
  • dealing with TCP/IP sockets;
  • modularity (packages, modules, functors, units);
  • automatic unit testing (often called xyzUnit, after the original sUnit) and test coverage;
  • reading and writing JSON, S-expressions, or XML;
  • the ability to load code dynamically;
  • spawning processes or threads;
  • constructing graphical user interfaces.

Task 1: Partnerships

By Friday, January 22, midnight do the following:

  1. Register for the course on Handins. The course page is https://handins.ccs.neu.edu/courses/130.
  2. Make sure you are on Piazza: https://piazza.com/northeastern/spring2021/cs4500
  3. Log in to the Khoury GitHub: https://github.ccs.neu.edu. This will enable us to find you when setting up your repos.
  4. Find a partner in your section and register your partnership (team) on Handins. You might find the Search for Teammates! note useful.

Note: If you fail to register a partnership by the given deadline, you will be assigned a random partner.

Task 2: “My Favorite Language”

Your task is for your team to choose the language, justify the choice, and write a draft memo for your manager that spells out the justification. As a part of the justification, include at least one alternative language you have considered, briefly explaining why it wasn’t chosen. Address the requirements stated above and briefly explain how the language satisfies them.

Formality

Address your memo to your manager. The subject is “Programming language for Khoury project.”

Format

Your memo must not exceed a single letter-format page at a 12 point font/16point base line with a 1.5in margin all around.

Delivery

Submit the following two files in a ZIP archive by Monday, January 25, 9pm to Handins:

  • A PDF copy of the memo as a file named our-programming-language.pdf via Handins.

  • A metadata file named meta.yaml following the template below. We strongly recommend you copy & paste the template and fill in the details

    ---
    partners:
      - <name>, <email>, <khoury username>
      - <name>, <email>, <khoury username>
    language: <your chosen language>
    ---

    Note that there are two lines containing three dashes. Example:

    ---
    partners:
      - Diogenes Nunez, d.nunez@northeastern.edu, dnunez
      - Ferdinand Vesely, f.vesely@northeastern.edu, fvesely
    language: Java
    ---

Grade

Your grade will depend on satisfying the specified delivery and formatting instructions and its style, grammar, and organization. If the content is blatantly wrong, your grade will suffer, too.


  1. In addition to using SSH with login.ccs.neu.edu, Khoury Systems also provides remote access to virtual desktops. See https://www.khoury.northeastern.edu/life-at-khoury/systems/virtual-desktops/↩︎