Back in 1984 I was attending college and the classes reflected the current computing architecture. I took Assembly, Cobol, CICS, and DL1. Assembly and Cobol where the languages of choice for mainframe applications. Cobol was a higher level language and had a lot of native support for reporting functionality. Whereas, Assembly (Assembler) was about as close to programming in 1's and 0's as you could get. Development time was long and tedious. Thankfully, I just missed the punch card days. You had no local computing capabilities so you had to rely on the server for compilation and execution (don't even bring up JCL - Job control Language :().
CICS was used for UI presentation. It was had its own set of language constructs and required support from Assembler and/or Cobol to provide functionality.
DL1 was the precursor to DB2 which was the database used for storing and retrieving data from a relational data store.
All of these components ran on a Mainframe where the CPU and Hard disks were bundled into a central machine. The CRT (UI, screen, ...) was used for visual presentation and was character based. None of this GUI (graphical user interface) stuff. Why, we walked to work in the snow up hill and we liked it ;). The thing to note here is that the CRT was a "dumb" (not smart) terminal. In other words, it provide no functionality other than displaying characters. The CRT (the client/users view of the world) provided no computational capabilities. The CRT did not contain a CPU (central Processing Unit), contained virtually no memory to provide temporal storage, nor a disk for storing permanent data. Everything useful happened on the Server itself. In some respects you can think of this as the thinnest of Thin Client models.