1 of 40

CS101

Hitchhiker’s Guide to CCCS

Dr. Liow

2018/11/01 - 2026/07/11

2 of 40

Prologue

  • This document is to help guide you.
  • This document is under constant revision
  • Let me know if you want me to add a new topic or add more info on a particular topic

3 of 40

Important skills

  • CS
    • Strong programming & debugging skills
    • Data structures & algorithms
  • Personality + people skills
    • Ability to self-teach
    • Focus, resilience, persistence
    • Team player -- be involved in the CS club

4 of 40

2018: CISS170/176 not pre-req for CISS240

5 of 40

Hot - IEEE 2018 report

  • Top 10 Trends (IEEE 2018): Starting from #1.
    • AI (top and appears multiple times)
    • Blockchain + cryptocurrency
    • Industrial IoT
    • Robotics
    • Assisted realized/virtual reality
    • Cybersecurity
    • (Data science -- big data, data analytics -- and cloud computing are not listed because because it is now generally recognized as important and already have widespread adoption.)

6 of 40

Hot - IEEE 2020 report

  • Top 12 Trends (IEEE 2020):

7 of 40

Hot - IEEE 2020 report

  • Top 12 Trends (IEEE 2020): Starting from #1:
  • Keywords appearing in the report;
    • AI (appears many times), ML, assisted driving, industrial automation, surveillance, natural language processing, AI critical systems, cognitive robots, AI/ML cybersecurity, adversarial ML, reliability and safety challenges for AI
    • Digital twins, cognitive twins, IoT platforms,
    • Delivery drones.
    • Additive manufacturing.
    • Quantum Computing
  • Important areas that reached broad adoption:
    • photonic-based communication in data centers, facial recognition, 5G, multi-agent systems, security of IoT devices, disaggregated servers, and Blockchain.

​

8 of 40

Hot - the 4th industrial revolution

  • “The Fourth Industrial Revolution is marked by emerging technology breakthroughs in a number of fields, including robotics, artificial intelligence, nanotechnology, quantum computing, biotechnology, The Internet of Things (IoT), Blockchain, 3D printing and autonomous vehicles.”
  • ASIDE:
    • 1st industrial revolution: steam engine and mechanization (1760-1830)
    • 2nd industrial revolution: science/tech/electricity revolution & mass production (1870- 1914)
    • 3rd industrial revolution: digital revolution (1950-?)
    • 4th industrial revolution: blurring of physical/biology/digital (NOW)

9 of 40

Hot: Programming languages

10 of 40

Hot: Programming languages

  • Perspective on PL popularity:
    • What’s hot now, might not be hot in 5 years’ time.
    • Without a long term perspective, data on “popularity of PL” is not useful and can be dangerous.
  • More importantly:
    • The “most important programming language” will change
    • The focus is on problem-solving, not language syntax. The goal: be strong in problem- solving, algorithms, and learn several programming languages DEEPLY.
    • A strong programmer will always be able to learn a new language on his/her own.

11 of 40

Hot: Programming languages

  • Why C/C++? (Why C/C+?)
    • Many languages are derived from C/C++. Example: Java, C#
    • C++ is multi-paradigm: procedural, object-oriented, functional.
    • C/C++ is a systems language.
  • Therefore knowing C/C++ will
    • help learn and understand other languages quickly
    • help think at a lower level, even at the machine level
  • C/C++ is irreplaceable in many domains
    • OS, internet, signal processing, AI and machine learning, computer vision, computer graphics, etc. You CANNOT run away from C/C++
  • In language popularity data, technically the percentage for C and C++ should combined.

12 of 40

Hot : Programming languages

  • Why Python?
    • In late 1990s to early 2000s, Java was the main language for data mining. Now for data mining and data science, Python has taken over Java. (The other popular data mining/science language is R but R is not popular in the industry.)
    • At the beginning of the internet revolution, besides Java, the other popular language for web dev is PHP. Right now. Many believe that Python taken over PHP.
    • Historically the two main AI languages are LISP and Prolog. Python has taken over both.
    • Besides C, Python is probably the most important high level language in embedded systems programming and robotics.

13 of 40

Companies hiring our grads & students

  • Some big ones (with multi-billion dollar revenue):

Google Dell Raytheon

Amazon Emerson Boeing

Microsoft IBM Bayer AG

AT&T Lockheed Martin Nestle

  • A larger (but incomplete) list ...

14 of 40

Companies hiring our grads & students

3M Corporation

Allata

Alight Analytics

Amazon

Anheuser Busch

Artesyn Embedded Technologies

AT&T

aWhere

​

Bayer AG

Boeing

CareerBuilders

CarFax

Cerner Corporation

Clarity Solutions Group

Columbia Insurance Group

Dell

​

15 of 40

Companies hiring our grads & students

Emerson

Equifax

EquipmentShare

Facebook

FBI

FDA

Garmin International

GoHealth

​

​

​

Google

H&R Block

Home Movie Depot

HP

IBM

Illinois Attorney General (Forensics Lab)

Lincoln Labs

Lockheed Martin

​

​

16 of 40

Companies hiring our grads & students

Los Alamos National Lab

Lucidworks

Mastercard

McNerney Management Group

MBS

MFA

Microsoft

Midway USA

​

Nestle

Oak Ridge National Lab

Oberd

Oscar-Wilson

Pastel Software Solutions

Precise Software Solutions

Raytheon

Razar Technologies

17 of 40

Companies hiring our grads & students

Rose International

Scientific Research Corporation

Scottrade

Selex ES (division of Indra Sistemas)

Sentera

SMART Embedded Computing

Solar3K

SteadyRain

​

​

State of Missouri

The Motley Fool

Turning Gear

University of Missouri

Vanderbilt University

Veterans United

WorkMarket ADP

World Wide Technology

18 of 40

Equipment

  • Get a Windows laptop. NOT a MAC!!!
  • Why?
    • Windows laptops are cheaper than MAC!!!
    • If you use MAC, you are on a small island. The WIndows country is much larger. You are paying a LOT MORE to get to a tiny island.
  • Get a laptop … not notebook, not chromebook!!!!
  • We use a Fedora (Linux) virtual machine that runs on VMWare Workstation in a Windows laptop.
    • This allows us to experiment with Linux.
    • Have everyone using the same environment for collaboration and group study.
    • The Fedora platform allows us to run g++, python, emacs, OpenGL, OpenCV, Qt, MySQL, AI libraries, etc.

19 of 40

Equipment

  • Windows laptop config as of July 2026
    • Does not have to be brand new. Some students has laptops which are 2-3 years old.
    • Get Windows 11
    • At least 8 core
    • RAM: At least 16GB. More RAM is better. Students have no problems running our Fedora virtual machine with 4GB RAM.
    • HD: at least 512GB. Set aside 50GB for the Fedora virtual machine.
    • Example: 16GB ram, 512GB SSD, i5 or Ryzen 5 (level of CPU). About $500 (Jan 2024)
    • Example: HP - OmniBook 3 - 14" 2K Touchscreen Laptop - Snapdragon X - 16GB Memory - 512GB SSD. $550 (July 2026) at Best Buy
    • Cheaper if buy refurbished from eBay.

20 of 40

Courses

  • Threads of dependency:
    • CS: CISS240 → CISS245 → CISS350 → everything else
    • Algorithms: CISS240 → CISS245 → CISS350 → CISS358
    • Architecture: CISS240 → CISS245 → CISS360 → CISS420
    • Calc: MATH107 → MATH150 → MATH180 → MATH201
    • Discrete: MATH201 → MATH225 FALL → MATH325 SPRING

​

21 of 40

Courses

  • Recommend:
    • CISS176 > CISS170. Take CISS176 if possible [NOTE: For students coming in after fall 2021, CISS170 & CISS176 are deprecated.]
    • There’s a CS elective “CISS145-Python or CISS238-Java or CISS234”.
      • Take CISS145 early. Take BOTH CISS145 and CISS238.
    • PHIL210-Logic. If possible before MATH225
    • ARTS317: Web design 1.
    • Science:
      • Physics most applicable for CS: game dev, scientific/engineering applications, etc.

22 of 40

Courses

  • Languages
    • C++: CISS240-245-350, OS, Networks, Computer graphics
    • Python: CISS145, AI, Crypto, DB (future: machine learning, robotics, embedded systems, IoT)
    • SQL: DB (and potentially other classes in the future)
    • OCAML: CISS445 (possibly compiler)
    • MIPS: CISS360 (compiler, embedded systems, microcontrollers)

​

23 of 40

Courses

  • CISS145 Python is STRONGLY recommended
    • If possible take before AI and Crypto and DB
    • Option 1: CISS145 → CISS240 → CISS245 → CISS350 (OK … but 240-245-350 delayed)
    • Option 2: CISS240 → (CISS245 & CISS145) → CISS350 (good)
    • Option 3: CISS240 → CISS245 → (CISS145 & CISS350) (probably best)
    • Option 4: (CISS145 & CISS240) → CISS245 → CISS350 (might be confusing)
    • Option 5: CISS240 → CISS245 → CISS350 → CISS145 (python’s too late)
    • Same for CISS238 Java. Take after CISS245.
    • If you are not confident about programming, then Option 1 is safer than Option 3.

24 of 40

Courses

  • 2020 Changes:
    • CISS145-Python:
      • Pre-req for CISS450, CISS451, CISS430. But since it’s just implemented, I will still be flexible on pre-req.
      • Will probably increase rotation back to fall & spring [?]
    • CISS358:
      • Now an elective.
      • “Part 2 of CISS350”.
      • Why? Not enough algorithms in CISS350 because there’s not enough time. And algorithms is the guarantee to top companies
    • CISS430-DB:
      • Pre-req CISS350

25 of 40

Courses

  • IMPORTANT: Talk to other CS students to get advice/recommendation
  • SUMMER: Catch up on GE classes if you are behind. Also good to take a refresher course.
    • Consider math refresher course(s) if necessary.
  • GPA: Retake a course to improve GPA.
  • AUDIT: No GPA.
    • Audit a CS course as preparation for that course
    • Audit a CS course after taking it if you did not “get” everything
  • PASS/FAIL OPTION: Can take 1 pass/fail non-core course per sem. No GPA.
    • PRO: Obvious!
    • CON: If the class is easy, you lose an A.

26 of 40

Courses - BIG PICTURE

  • Although there are many courses and they are all important the big picture is this …
  • IMPORTANT!!! The three legs of the foundation of CS
    • Algorithms
    • Discrete math
    • Automata
  • Algorithms: CISS350+CISS358. You CANNOT get into a top company if you don’t know your algorithms. You won’t even get a phone interview.
    • Different high level courses will have specialized algorithms. CISS450 has AI algorithms, etc.
  • Discrete math: MATH225+325 (and CISS350+CISS358)
  • Automata: CISS362 (and also in CISS445)
  • The three are inseparable. There are overlaps between them.

27 of 40

Courses - specific interest/focus/career

  • ALL CS courses are useful ... depends on instructor of course
  • Personal interest/focus on an area is good -- but only if you don’t have tunnel vision.
  • A broad-based CS education is more important
  • So:
    • Be excited about learning new things all the time, and
    • Do extra self-study on your favorite topic
    • It’s OK to change your “favorite topic” once a while -- there are just too many exciting things in CS!

​

​

28 of 40

Courses - specific interest/focus/career

  • MS or PhD:
    • If you are interested in grad school, you should probably talk to me as early as possible.
    • Take as many as courses as possible
    • Particularly important:
      • CISS350 & 358 & 362 & 445
      • MATH225 & 325
      • Calc 1-3, linear algebra, Differential equations, Probability
    • Plan to take GRE test – you’ll most likely need at least 6 months of preparation. And some people have to try the GRE test twice. Some schools do not require GRE.

29 of 40

Courses - specific interest/focus/career

  • If you are interested in AI ...
    • C++ and Python
    • Algorithms: CISS350, 358, 362 and MATH225-325
    • AI algorithms: CISS450
    • Vision related: CISS380
    • Math: Calc 1-3, linear alg, Differential equations, Probability

​

30 of 40

Courses - specific interest/focus/career

​

  • If you are interested in Crypto ...
    • (NOTE: blockchain falls under crypto)
    • C++ and Python
    • Algorithms: CISS350, 358, 362 and MATH225-325
    • Crypto: CISS451
    • Math: Calc 1-2, linear alg, Differential equations, MATH338-Probability

31 of 40

Courses - specific interest/focus/career

  • If you are interested in game dev ...
    • C++ and Python
      • Python can be used for initial learning of writing simple game and for prototyping.
      • You can also program unreal engine using python.
      • But all serious game dev people will tell you to learn C++
    • Algorithms: CISS350, 358, 362 (not the TM part) and MATH225-325
    • Physics: Newtonian, wave/optics, etc. Not modern physics (relativity, quantum).
    • CISS450-AI
    • CISS380-Graphics
    • Math: Calc 1-3, Linear alg, Differential equations

​

32 of 40

Future -- looking forward ...

  • Areas to go into:
    • Machine learning?
    • Big data?
    • Blockchain + cryptocurrency?
    • Game dev + computer graphics?
    • Computer vision, image processing (with machine learning)?
    • Robotics?
  • New courses? … Not enough students … so ...

​

​

33 of 40

Future -- looking forward ...

  • Machine learning … temporarily put some in CISS450-AI?
    • Machine learning? Python + C++
    • Computer vision? [UPDATE 2020: Started book. 75 pages. C++ and OpenCV.]
    • Get ready for robotics?
  • Big data … temporarily put some in CISS430-DB?
    • Data science? Data mining?
  • Blockchain + cryptocurrency? … temporarily put some in CISS451-Crypto?
  • Games dev?
    • C++, unreal engine
  • For sure: I will use Python & C++ in machine learning, big data, blockchain.

34 of 40

Future -- looking forward ...

​

  • Very likely:
    • CISS358 will become Algorithms Part 2 (after CISS350). Will push more students into top companies and better prepare students for grad school
    • CISS145-Python will be required because Python is important in many CS areas
      • AI
      • Data analytics
      • Embedded systems
      • IoT
    • CISS430-DB will have CISS350 pre-requisite. Will allow us to cover more topics in DB/data related areas.
      • Web programming using cloud and flask micro-framework
    • CISSxxx-Machine Learning? CISSxxx-Computer Vision? When?
    • CISSxxx-Big Data? When?

35 of 40

Self

  • Have a big goal -- Do you dream?
  • Time management is VERY important.
    • You have more time than you think.
    • But … WHAT are you doing with your time?
    • Do you know how/when/why to say NO to distractions? (Have you even identified distractions in your life …)
  • Be involved in the CS club.
    • Network with peers.
    • Learn to work with people -- people skills are important.
    • Learn to live in a CS type community and learn to contribute
    • Teach yourself something new and give a “tech talk”.
    • Help bring others into the CS program here

​

36 of 40

Self

  • Spend time getting to know CS. Will help build/maintain interest in CS.
  • Create accounts at FB, linkedin, etc. (Easy)
  • Self-study is important. Do personal open source projects.

37 of 40

FAQ

  • “Which non-CS courses are useful?”
    • Correct answer: Depends on what you want to do
    • Math:
      • Calc 2
      • Linear algebra
      • Calc 3
      • Diff eq
    • Science:
      • Physics > Chem > Bio
      • Physics probably opens up more career paths
    • For gen ed, talk to other CS students to get ideas. Some CS majors like philosophy classes, esp eastern philosophy.

​

38 of 40

FAQ

  • “I have lots of transfers … I’m running out of courses to take!”
    • Declare minor or second major
    • Retake courses to improve GPA. Your GPA is important.
      • A very strong programmer will find a job even if he/she has a lower GPA - BUT some company use HR people to weed out applicants. HR people look at GPA.
      • Some people might view a low GPA as weak work ethic.
      • That being said, there’s a serious shortage of CS grads. I know of companies that will look at CS resumes even if the GPA is 2.0. But GPA 2.0 should NOT be your aim!

39 of 40

Myths … i.e. nonsense

  • “CS students work for NASA and CIS/MIS students work for businesses”
    • Most of CS graduates work for businesses. This is the same for US and the same for our students just because there are more jobs in businesses.
    • I do have graduates working in non-business type development (flight training simulator, embedded systems, etc.), but that’s not the majority.
    • Also, note that some businesses do serious CS. Example: Amazon, Nestle are involved in AI and robotics.

​

40 of 40

Myths … i.e. nonsense

  • “I’m guaranteed a job writing software”
    • No - there’s no guarantee.
    • Don’t think that just because you chose a CS major, you will automatically get a job.
    • If you don’t know your CS, you won’t even get an interview.
    • If you don’t do well on the job, you don’t get to keep it.
    • Work hard!