C++ Programming - Fall 2023-24

Welcome to the Course

Welcome to this course on C++ - specially designed for non-programmers and specifically targeted at Civil Engineering students. I face a common question - WHY do I have to learn how to program? The rate at which digitalisation permeates the sector makes every person understand how to program. Programming is becoming one of those essential tools in your tool kit. Automation is today's watchword, and we will use C++ to acquire some essential skills.

We will come in contact with many of the tools and the more recent generative AIs. For us to remain irreplaceable, our skillset should be such that we effectively use the power of all the technologies available to us.

I prefer C++ personally over many languages because the behaviour of the programs is very predictable. I prefer to use something other than ready-made libraries, often not maintained in successive iterations. As a low-level language, it is possible to interact with hardware and customising behaviour. I am also fond of the structure I am very familiar with - the structure as given by C and PHP, which I am fond of coding. C++ is syntactically close to the language of microcontrollers like Arduino.

We will work with the different aspects of data types and program constructs and start early on with classes. Class-based visualisation will help us in our quest to model real-world entities. Such an ability should help in the visualisation of real-world information that civil engineers are keen to work with - Building Information Modelling that goes with the acronym BIM.

Computers and where we Stand

Computers have come a long way. I am always amazed that many of our mobile phones are more powerful than the Apollo 11's computer while weighing a mere 30 kg[1] and had a processor that was about 1MHz with a RAM of 2KB[2]. I have programmed using GW-BASIC the Intel 8088 in 1988. We always had to worry about the number of variables and the data size which would be stored for successful execution. While this is certainly not the case nowadays, it is still good to remember the evolution of computer systems as we see it today. Reading the creation of the MAC is interesting[3]. The future sits on the shoulder of these giants. AR/VR, wearable computers, and quantum computers are soon entering our everyday lives. It is always nice to reflect for a minute on these developments as we work on developing solutions.

We will be starting early with file handling and use files exclusively for all our input needs. Because of limitations in the sandbox environment of Moodle, we will not be having file outputs done as part of grading; however, proficiency in writing to files is important. File handling is effectively done when we have an idea of how to error handling and classes. Classes are nothing but a mechanism to model real-world entities in a computer.

Automation, data science, Artificial intelligence, and Improved productivity depend on your ability to program. Parametric modelling in most modern engineering modelling tools allows and requires a certain amount of automation to be done. When the occasion arises, the concepts that we explore will certainly be an asset to you.


References:

[1] The Vintage News

[2] Big Tech Question

[3] IEEE Spectrum

Related Projects