This assignment has two parts. Note that the due dates are different for each task.
Task 1 – Get Together
Due: Monday, September 16, midnight
The first task is for you to team up with your fellow students and form groups of 4.
Potential Groups of 5
Of course, the numbers will not quite work out and a few groups of 5 will be necessary. Some of you even asked to form groups of 5, because you do not want to break up the band. However, since only up to 3 groups of 5 are necessary in each section, we need to have a way of resolving this situation. We will do it simply on a first come, first served basis as follows. On Friday, September 13, on or after 6:00:00pm EDT, send your instructor (Ferdinand) an email stating:
- that you are requesting to form a group of 5,
- what your reasoning is, and
- who are your proposed group members.
When I determine that a group of 5 needs to be formed, I will give preference to groups in the order I receive your emails, but not if I your email arrives before 6pm. Only after you receive a confirmation from me, should you go ahead as a group of 5. If I receive a registration email (see below) for a group with 5 members without me confirming beforehand, your grade for this assignment will be reduced and I will reassign one of you to another group.
Finding Group Members
If you are having trouble finding group members, use Piazza to advertise that you are
- Looking for a group member
- Looking for a group to join
Do this as soon as possible. It is up to you to communicate with your fellow students and negotiate teams.
Registering Your Group
Once you have formed a group, it is time to announce it to the world. Well, your instructor. First, choose a group nickname. The nickname has to adhere to the following rules:
- It may only contain alphanumeric characters or hyphens.
- It cannot have multiple consecutive hyphens.
- It cannot begin or end with a hyphen.
- It is at most 18 characters long.
To register your group, (s)elect one member to send an email to your instructor (Ferdinand) by the due date above using the following template:
Subject: CS 4500 Group registration
Body:
Group: [group nickname]
Members:
1. [Last name, First name]
2. [Last name, First name]
3. [Last name, First name]
4. [Last name, First name]
Usernames:
[username1], [username2], [username3], [username4]
Email addresses:
[email1], [email2], [email3], [email4]
Do not forget to Cc all the other group members.
If your group has 5 members, add a corresponding 5th element to each of the sections AND quote my confirmation email in full, together with the timestamp of when you received it.
Task 2 – Your Favorite Programming Language
Due: Wednesday, September 18, midnight
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:
- the code will be deployed on the Linux lab machines of Khoury College, and
- 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;
- constructing graphical user interfaces.
Task
Your task is for your group 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.
Formality
Address your memo to your manager. The subject is “Programming language for CCIS 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
To submit, the group member, who was selected to send a registration email in Task 1, should head over to Blackboard and find Assignment A under Assignments. Submit a PDF copy of the memo as a file named project-programming-language.pdf
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.