Welcome to CS 35L (Software Construction Lab)!

Welcome to the next decade guys! I will be your TA for the CS 35 L Software Construction Lab for Lab 7 (Folks from other labs, feel free to use this resource as well!). I will be collating all the resources I used to design the content of this course on this blog. So incase you miss some lectures, this blog’s there to cover up for that.

This lab, as the title suggests will help you master the fundamentals required for basic software engineering. The skills you will learn in this course would be indespensible for any career path you choose which intersects with computer science and engineering. You will be learning a lot of things in these 10 weeks, so brace for yourselves! A key point to remember is that this course is supposed to be an introduction course, so the focus is on covering a breadth and basics of the key topics in software engineering. If you approach the course with this mindset, you will surely do well! My reponsibility as a TA for this course, would be to help you get started with the content in the lab, and answer any difficulties you have in the assignments, homeworks or projects. I will try my level best to keep you motivated throught the course!

Getting started with software engineering might feel a bit dry to some people, since you will mostly be looking at documentations, and then implement/use a piece of code or software. But think of it as learning the english alphabet. The letters independently are of no use mostly. But when used together (with punctuations of course), enable me to write this blog for you! Look at this course with a similar perspective, that the aim of this course is to get you well versed with the alphabet for software engineering. Almost all the software you use everyday, has these components at the core of it. Hence, mastering the content of this course would be a crucial step in pursuing your careers.

Course Logistics:

  • Course webpage: TBD Check this out for assignments, syllabus and other resources.
  • Lab Timings: Tue (2:00 PM - 4:00 PM)
  • Lab Venue: TBD
  • Office Hours: TBD (mostly Friday sometime)
  • I will keep posting the resources I use on the Resource Doc. Once we finalize the resources for most assignments, I will add the resources to the webpage.

Week 1:

The focus of week 1 is to give you a basic introduction to linux, the bash shell and Emacs.

Lab 1 queries:

  • Path Variable : PATH is an environment variable on Unix-like operating systems, DOS, OS/2, and Microsoft Windows, specifying a set of directories where executable programs are located. When you look for an exectuable (For ex gcc) , it will be first searched in the current directory, and then the left most directory in the PATH variable. After you pre-pend the directory, restart the shell for the command to take effect

  • Recording Key Strokes in Emacs : You might want to look into keyboard macros, but I found a simple way to do it. Write whatever text you want, then use the comman C-h l. You can then copy your keystrokes to another file/buffer.

Week 2:

The focus of week 2 is to give you a basic introduction to regex and shell scripting, and applications of the same.

Lab 2 Hints:

  • Use the sed, tr and grep commands effectively, together with the pipeline operator, they will help you write the buildwords script. Sed Tutorial. Refer to the Sed- Regular Expressions section for help.

  • For any operation you want to do, try writing it as a regex filter, then see which of the commands, tr, sed or grep can be used to achieve the final output. Think of buildwords as a series of operations