1 of 40

CS101

Hitchhiker’s Guide to CCCS

Dr. Liow

2018/11/01 - 2020/10/26

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

  • Programming languages:
    • https://www.youtube.com/watch?v=UNSoPa-XQN0
    • From: TIOBE index | IEEE 2000
    • 10 most satisfying
    • https://www.daxx.com/article/python-developer-salary-usa
    • Perspective
      • 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.

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++?
    • 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 Jan 2024
    • Does not have to be brand new. Some students has laptops which are 2-3 years old.
    • Get Windows 11
    • At least quad core
    • RAM: At least 8GB. More RAM is better. Students have no problems running our Fedora virtual machine with 4GB RAM.
    • HD: Set aside 50GB for the Fedora virtual machine. HD of at least 512GB is recommended.
    • Example: 16GB ram, 512GB SSD, i5 or Ryzen 5 (level of CPU). About $500 (Jan 2024)

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.
    • Talk to me

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!