OKStateACM / cs-survival-bootcamp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CS Bootcamp

Intro

  • We are a student chapter of the ACM. The ACM (Association of Computing Machinery) is an international organization that is devoted to the advancement of computing.
  • What we do as a local chapter:
    • Weekly meetings (Wednesdays, 5:30)
    • Programming Contests
    • Hackathons/Game Jams
    • Provide a community for support/discussion.
      • Join our Slack/GroupMe!
    • Workshops

Structure of This Bootcamp

  1. Introduce Tools
  2. Give General Advice
  3. Upperclassmen Q&A

Tools

  • The first section of this workshop is all about finding the right tools to help you with programming and learning computer science in general.
  • The tools you use are completely up to you, but there are so many available that picking one can be intimidating. We are here to try and help you narrow down your options

The Tools You Need

  • Question: As a programmer/cs student, what do you spend most of your time doing? (HINT: Think generally)
Answer

Editing Text

  • Because of this, a text editor is probably the most essential tool in your arsenal, so pick a good one.

Text Editor vs. IDE

  • The most basic tool for editing text is a text editor. There are text editors optimized for writing code with features like syntax highlighting and auto indentation. They are, however, not as full featured as IDEs

  • You have maybe heard the term IDE thrown around. An IDE is an Integrated Development Environment. It's like a text editor, but is much more advanced. Most IDEs have stuff like autocompletion, debuggers, project explorers, etc.

  • So which should you use?

    • Again, it all comes down to preference, but here are some things to keep in mind.
    1. Becoming dependant on an IDE could hurt you on test day
    2. It's arguable that you can learn more by using a basic text editor and command line tools
    3. Some tasks are essentially impossible to do without an IDE. (Example: mobile development)
    4. Once you are proficient at programming, IDEs can speed up your workflow tremendously.

Text Editors

  • Notepad ++

    • Advantages:
      • Easy to use
      • Free and Open Source
    • Disadvantages:
      • Mainly designed for Windows
  • Sublime Text

    • Advantages:
      • Plugins
      • Very Popular (a lot of support)
      • Disadvantages:
        • Paid Model (Sort of, annoying dialog)
        • Proprietary
  • Atom

    • Advantages:
      • Amazing Plugin System
      • Themes
      • Open Source
    • Disadvantages:
      • Can be one of the slower text editors out there
  • Atom Demo

Editor Wars Meme

IDEs

  • JetBrains (IntelliJ IDEA for Java)
    • Advantages
      • Really starting to pick up with Industry
      • Increases Productivity
    • Disadvantages:
      • Commercial version and community version

Intellij Meme

  • Eclipse
    • Advantages:
      • Free
      • Somewhat "Industry Standard" for Java (atleast it has been)
    • Disadvantages:
      • Can be Really Slow

Eclipse Meme

Operating System

  • It's important that, as a cs student, you have an operating system that lets you use the tools you need to use while still fitting your preferences and also allowing you to explore and learn without restrictions.

Person A: Windows is the ONLY operating system you can use if you are going to be a cs student!

Person B: If you are not using Mac OS, you are just not fit to be a cs student!

Person C: Real cs students use Linux, only posers use Windows or Mac OS

  • Question? Who's Right?

OS Meme

  • All of these people are WRONG!

  • Reality: It really doesn't matter, you can succeed no matter which OS you use. Buuuttt....

  • Knowing how to use standard Linux utilities is a really good skill to have, but that doesn't mean you have to use Linux as your primary operating system.

    • If you would like to learn more about Linux, both in terms of gaining necessary skills and using it as a desktop operating system, come to our meeting this semester over Linux!
  • So, what should you, as a cs student, use as your primary operating system? It's up to you, but heres a pro/con breakdown

  • Windows

    • Virtually everyone uses it. You'll have no trouble getting help.
    • It has to have a graphical solution for everything, even if that means crazy workaround solutions to simple problems (java environment variable example)
  • Mac OS

    • Contains a BASH shell
    • Really popular among developers
    • Only really available for apple products, unless you go the Hackintosh route. Even then, there is specific hardware requirements.
  • Linux

    • Teaches you fundamental computer science skills (command line)
    • Extremely customizable
    • Should be able to find everything you need for programming (and whatever else) in your distro's repos. (Exception: Stuff like iOS dev)
    • Steep learning curve

Other Tools

  • Git/ Github
    • Come to next week's meeting to learn all about this!

Resources

Official Resources

  • Java API, etc. (Official Documentation)
  • Your professors

Unofficial Places to Get Advice and Help

StackOverflow I'd Like to Thank for this degree

Learning New Languages

  • It's a good idea to be exposed to other languages besides Java. Some popular ones:
    • Python
      • Interesting Language used by a lot of technologies you probably use everyday.
      • Syntax much simpler than Java.
    • C++
      • An interesting language to learn, but if you're a cs student you'll have to take a class over it anyway.
    • Javascript
      • Language used by browsers to interact with webpages.
        • There are other uses, but that's the most popular.
      • Having very little knowledge and practice, you'll find that you can make some pretty cool things.
  • NOTE: As you learn more about computer science, you'll find out that most languages really aren't that much different. Once you learn one, you can learn another quickly and easily.

Python vs. Java Meme

Advice for how to succeed as a cs student here at osu

  • LASSO Tutoring Center
  • Personal Projects
    • Collaborate with other students
  • Learn beyond classroom ( edx , YouTube)
  • Once you get pretty comfortable with Java, learn another language. Look into other skills (e.g., Web Dev, Android Dev) that you can learn about and devote some time to learning them.
  • Career Development (We have a meeting over this too)
    • A&S Career Services
  • The XY Problem
  • How to Ask Questions The Smart Way

Funny CS Image

About