What is Racket? An is a "Scheme" like some sort of algorithm/another name for algorith?
I want to say congratulations but I have no idea what you just accomplished. Shed some light for the newcommer if your time allows it?
As Antsan mentioned, "Scheme" is a functional programming language and is one of the two main variants of LISP (the other one being Common LISP). "Racket" is a specific version of Scheme, and the language within Racket that we were using ("Pretty Big"), is essentially a very pared down version of Racket that is basically used only for teaching purposes.
Now the type of programming you see in languages like Java is called "object oriented programming", and, to put it in
extremely basic terms, that involves gathering like functions into classes (like "Object", for example) that have a set group of functionality. You also tend to use step-by-step based programming styles, such as "do A; do B; do C;". On the other hand there are no real objects in functional programming, so you can't do something like, say "int bob = 3;", and in addition to that fact it uses a form of programming called functional programming, which the closest way to picture it is to picture that you are never allowed to say "do A; do B", at no point are you ever allowed to save what is officially called "state" (or at least you try to do so as little as possible). If you've ever done recursion without using global variables, imagine a whole language where the only thing that exists is recursion-esque functions. You can pass a variable to a function, modify it, and then pass it to something else, but at no point can you ever save it.
What I've done is essentially build the framework from scratch that is required for you to be able to do something similar to "Point bob = new Point(1, 2);", where "Point" is a class that stores an x and y coordinate. It's a huge rush to finally have done it and understand how it works, but it certainly was also a huge pain, it makes you at least sympathize with the people who were trying to write programs back in the early days of computers.
Arrays are fixed length, lists are not. You would think, considering that, that arrays are more efficient but they usually aren't significantly faster than lists. IMO there's not much reason to use arrays, unless you're using an existing function that requires an array as an argument.
So it's important to note the difference between Python "lists" (which are virtually identical to C "vectors") and C "lists", which are something completely different. Python lists and C vectors are essentially just arrays with a bit of code running on top of them to do some stuff (like resizing) automatically for you rather than having you worry about it. Unless you are tight on space, or you really want to enforce the fact that this array's size should never ever change in your code, using a Python list/C vector is identical in every way to an array and there's no real drawback.
On the other hand C lists have a big difference from arrays, which is that because they aren't stored contiguously in memory each block only knows about the block that immediately follows or precedes it. This means that while you are doing operations like adding to the end or the beginning it's still O(1) efficiency like just arrays are (and it actually beats arrays in accessing those since it never runs out of space, while C "vectors" or Python "lists" will eventually run out of space and have to perform a O(n) resize operation). C lists also function similarly to arrays in adding or removing to the middle (assuming you fill the array gap), both being O(n) efficiency. The big place where they suffer, however, is reading individual pieces of data out of the middle of a list vs. an array, where lists require O(n) while arrays are simply O(1). They also suffer greatly on space size as well; a C "list" for integers will take, at minimum, 3x the space that a simple C array would take in the same space (and a couple times more than a C vector or Python array would take). It's not a big deal if you are working with short lists on a big ol' computer, but if you're ever working with very large lists or in embedded systems than arrays are the way to go by far.
So in short:
Never changing length? - Array
Changing length? - C vector/python list
Reading/accessing/writing only to ends? - C List
Reading from the middle? - C vector/python list/array
Extremely limited on space/big amounts of data? - Array