LMU ☀️ CMSI 3801
LANGUAGES AND AUTOMATA I
HOMEWORK #1 Due: 2025-09-05

Learning Objectives

With this assignment you will demonstrate:

Readings and Videos

Please:

Instructions

Work in teams of 1 to 4 students.

Repository Setup

Create a GitHub repository with the following structure:

.
├── README.md
├── LICENSE
├── .gitignore
├── code/
│   ├── python/
│   ├── javascript/
│   ├── lua/
│   ├── typescript/
│   ├── haskell/
│   ├── java/
│   ├── kotlin/
│   ├── swift/
│   ├── c/
│   ├── c++/
│   ├── rust/
│   ├── go/
│   ├── fortran/
│   ├── julia/
│   ├── ada/
│   └── pyth/
└── exercises/
    ├── hw1.md
    ├── hw2.md
    ├── hw3.md
    ├── hw4.md
    ├── hw5.md
    └── hw6.md

Make sure to give your repo a nice, descriptive name, and that your README.md file has a nice title and description, including all students’s names. Ensure that your repo is private for the duration of the semester, to reduce the temptation for other students to look at your work directly. All of the homework for this course will take place in this repository. As it is private, please add, as collaborators, me (rtoal) and Wesley (Undalevein).

Important: There must be only one official repository per group.

Code

For each of the 16 languages in your repository, implement a simple "Hello, World!" program. Each program should follow the naming, spacing, indentation, and other conventions of its respective language. You may get assistance from an AI language model.

Exercises

In the file exercises/hw1.md, provide solutions to the following problems. You will need to do research, as not all of these topics were covered in class:

  1. What is meant by filtering a list? Give an example that uses a built-in filter function in the language of your choice.
  2. Give a compact Julia expression for the array just like the array called numbers except that every value is cubed. Use broadcasting.
  3. What is meant by the phrase “pragmatics of programming languages”?
  4. Explain, in detail, this fragment of K: {+/x[&x!2]^2}
  5. What does the term object-orientation mean today? What did it originally mean?
  6. What characters comprise the following string: ᐊᐃᓐᖓᐃ? List the code point and name of each character that appears, in order. What is the meaning of the string, assuming its intended context?
  7. What is the difference between control flow and concurrency?
  8. How do machine and assembly languages differ? Give an example that is different from the one seen in class.
  9. We saw, in class, a function that computed either $3n+1$ or $4n-3$ depending on whether $n$ is even or odd. Write this function in a programming language not seen in class.
  10. The language Verse is billed as a functional-logic programming languages. Write a short paragraph about Verse, including its creator, year of creation, why it was created, and what exactly “functional-logic” means.

Please use professional and well-structured Markdown formatting for your answers. Take pride in your work. Show you care.

Submission

To submit your work, choose one and only one team member to submit to BrightSpace (1) the names of all team members, (2) the URL of your private repository, and (3) an affidavit for each team member stating that they have done the assigned book readings, reviewed the aforementioned course notes pages, and watched the Bret Victor and Alan Kay videos.

Teamwork

Remember that, when working in teams, all team members should participate in generating solutions and are responsible for understanding all submitted answers. Ideally, each team member should produce individual answers for all exercises, and the team should combine them to produce the ultimate submissions.

Grading

Exercises are worth 5 points each. The repository structure and adherence to coding conventions will be worth 50 points. Make sure there are no superfluous files in the repository, as this will incur a severe 20 point deduction. This harsh penalty is present to ensure you develop good habits such as keeping your repository clean. You should, therefore, make heavy use of .gitignore files.

Your homework submission will be the state of your repository on your main branch, at 18:00 in the America/Los Angeles time zone on the due date.