The final Racket assignment likely will also be due on May 3, so budget your time accordingly.
If you want to work with a language that's new to you, there are thousands to choose from! You'll probably want to choose a language that has an implementation available for your machine or is installed on lectura so that you can experiment with it. A language with a REPL makes experimentation easier, of course.
Slide 28 in the intro set lists a number of prominent languages. Here are some others that immediately come to mind:
Elixir Elm F# Groovy MATLAB OCaml R Tcl
Lots more choices, maybe too many, can be found on Wikipedia's List of programming languages page.
Some older languages have quite a few features that are fairly different from what we commonly see today and might present some low hanging fruit. COBOL, Forth, MUMPS, and (my favorite old language) SNOBOL4 come to mind.
In elementary school you might have written a report on "The Civil War". By the time you got to college you probably realized that "The Civil War" was a hopelessly big topic to cover in a single report. But maybe "The Battle of Picacho Peak" would have been about the right size.
Similarly here, the task is not to cover a full language but just one single aspect or element of a language.
Here are some seven-minute topic ideas:
Maybe
in Haskell
Algebraic data types in Haskell
Higher-order predicates in Prolog
"Globals" in MUMPS
PICTURE in COBOL
Lambda expression support in Java 8
java.util.stream
Prototypes in JavaScript
Control structures in Bash
Arrays in Bash
Writing an iterator in Python
Decorators in Python
Macros in Rust
Sigils in Perl
Iterators and blocks in Ruby
Regular expressions in Ruby
Typeless-ness in BCPL
Stack-based programming in PostScript or Forth
Using C's sizeof
to explore the language
Fun with the C preprocessor (beyond what's covered in 352)
Type hints in Python (PEP 484)
NumPy's excellent usage of of Python's operator overloading
Examples of FORTRAN List Processing Language (FLPL) code
...more topic ideas may appear here!...
Be sure that your topic is language-centric rather than library-centric. NumPy is a fascinating library but just talking about some of its many functions
would be library-centric, not language centric. On the other hand, digging into how something like a[:,:-3,:]
works would be very
language-centric.
One way to look for topic ideas is to browse tables of contents of books on Safari. For high-bandwith browsing, go to the science library.
Think of your goal as being technical entertainment. Your challenge is to find some interesting thing for which you think you can create material that will hold a classmate's attention for seven minutes.
You can make any assumptions you want about your audience. For example, you might assume that your audience is your 372 classmates, implying that they know Python, Java, Haskell, Prolog and, by the end, Racket. If you want to talk about the C preprocessor, you should probably assume the audience knows some C.
It's fine to use examples you discover on the web and in books; just take a moment to verbally cite the source, like the author's name, the name of the book, or the website. It's fine to watch videos to help find a topic or learn more about your topic.
You don't need to get your topic approved in advance but I'll be happy to offer advice on your ideas, or help you find an idea.
If your language has a REPL, your video might just be a screen recording of you demonstrating a feature and narrating what you're doing.
If you're inclined to write slides with PowerPoint, Keynote, or whatever, and record a presentation, perhaps even projected on a screen in a classroom, that's fine.
You can work with pencil and paper, writing out examples by hand, as one might when working on an Elmo, and shoot video with a cell phone.
Any mix of the above modes or additional modes is fine.
I don't expect you to spend time editing video to make it perfect, or anywhere near perfect. You're certainly free to do some video editing if you want, but I'm fine with a single "take".
It's fine to run a little past seven minutes, but keep it under eight minutes. If you're significantly under seven minutes there will be a proportional deduction in your grade. I'll stop watching at eight minutes.
video.txt
using
/cs/www/classes/cs372/spring23/av/turnin
. Just run that script in whatever directory your video.txt
resides, like this:
% ls -l video.txt -rw------- 1 whm root 188 Mar 17 21:37 video.txt % /cs/www/classes/cs372/spring23/av/turnin ======== contents of av.20230317.213807.tz ======== -rw------- whm/root 258 2023-03-17 21:37 video.txt ======== running turnin ======== Turning in: av.20230317.213807.tz -- ok All done.The file you're turning in,
video.txt
, should be structured as follows:
First line: A title for your video
Second line: The URL for your video
Third line: "Post: yes
" or "Post: no
"
Following lines: Any sort of comments or observations you'd like to make, if any.
Here's a sample video.txt
:
% cat video.txt The Amazing Haskellon Explores Monads https://www.yootube.com/watch?v=xZZhFlIl0Zo234 Post: yes At first I was worried about being able to fill seven minutes but soon I was fighting to keep it under eight minutes! I spent a whole day on this thing!
I'll collect the URLs for the videos that have "Post: yes
" and post that list on Piazza.
I'll use exactly the title you specify. If you want your name or a pseudonym shown, include it in the title
in some way.
Specifying "Post: yes"
earns you a five-point bonus. You can remain anonymous, except to those who might recognize your voice, for example.
I don't expect you to achieve full understanding of your topic; you just need to know enough to fill seven minutes. It's fine to point out some things that you were unable to figure out.
If you have a disability that makes this assignment difficult for you, please let me know; we'll work out an accommodation.