Applying for Jobs/Internships and CS 101 Fundamentals of Computing Spring 2021: Difference between pages

From Computer Science at Indiana State University
(Difference between pages)
Jump to navigation Jump to search
wiki_previous>Jkinne
 
m 1 revision imported
 
Line 1: Line 1:
=Applying=
== Catalog Description ==
== Advice ==
The main focus of the course is to give students a practical understanding of computing to become well-informed citizens and professionals in the computing ageTopics may include a basic study of - computational thinking, computer security, big data, artificial intelligence, and current trends in computing.
''Cover letter'' - if it is an option, then do one for a particular jobWhy are you interested, and why are you qualified?


Tailor your resume and cover for each type of job, and to each individual job.
== Prerequisites ==
Typing and basic computer use - web browser, email, etc.


''Start early'' - it takes most people 3-6 months to find a job. Start applying now!
== Standard Content ==
===Course Outline ===
We will spend 1-2 weeks on each of the following topics:
* What is inside a computer: CPU, RAM, hard drive, etc.
* Internet 101: how data is moved around the internet
* Computer and internet security: how do you know your data is secure?
* Servers and such: logging into a server, transferring files
* Html basics: creating web pages, a little bit of javascript
* Block programming: scratch.mit.edu, code.org, blocky
* Computational problems: things computers can do really well, and things that are impossible for computers to solve
* Artificial intelligence: different meanings of the term, examples


''Be realistic'' - don’t waste your time applying for jobs you are only marginally qualified for.
===Learning Outcomes===
The following are the most important learning outcomes for each of the 8 topics listed in the course outline.
* What is inside a computer
* Name the different components that make up a computer.
* Describe what the terminology associated with a component means (e.g., Ghz for CPU’s is the speed of the CPU, GB for the size of a hard drive).
* Evaluate the tradeoffs between different components (e.g., one CPU versus another)
* Internet 101
* Explain the basic infrastructure of the internet and associated terminology.
* Explain the infrastructure of a home network, and be able to configure a home network.
* Explain how web browsing and email works, in terms of which parties are involved (e.g., server and client), where data is stored, and what communication is involved.
* Computer and internet security
* Explain the concepts of encryption/decryption, digital signing, and the difference between public-key and private-key encryption.
* For given situations, be able to say whether a given interaction is secure or not.
* Know the key terminology of internet security (e.g., rsa, sha, https, etc.).
* Servers and such
* Explain what servers are used for
* Be able to log in to a server to transfer files to a server, and login via ssh to issue commands to the server
* How is data stored on a server, and how do we access data
* Html basics
* Explain the basic structure of an html document, and understand that an html document is a plain text file that has markup tags to say how to display different parts of the webpage.
* Be able to create simple html webpages.
* Be able to put webpages onto a web server.
* Block programming
* Understand the concept of a computer program as instructions for the computer.
* Be able to design simple programs in a graphical programming environment (one where there is no possibility for syntax errors, e.g., scratch).
* Computational problems
* Explain some examples of computational problems, and understand how problems are framed (input to the problem, correct output, running time of finding the solution).
* Basic skills in evaluating efficiency of an algorithm.
* Explain some examples of computational problems that either cannot be solved, or require inordinate amount of time to solve (e.g., halting problem).
* Artificial intelligence
* Understand the concept of the “Turing test” as a test of artificial intelligence.
* Know the history of some famous examples of “artificial intelligence” (e.g., chess playing, Jeopardy playing, chat-bots).
* Explain some examples of artificial intelligence techniques (e.g., spam filtering, facial recognition, expert medical systems).


''Networking'' - if you know someone at the company, that gives you a huge advantage.
===Important Assignments and/or Exam Questions===
* ''TODO''


''Technical interviews'' - many companies run technical interviews.  Imagine one of your CS professors quizzing you about everything you should have learned as a CS major.  Those who get the job generally will have done well on the interview.  The take away is - start studying now everything you should know, focusing the most on programming, data structures, algorithms, and specifics from the types of jobs you want to apply for.
=== Standard resources ===
 
* The Beauty and Joy of Computing - course on CS Principles, including programming in SNAP
''What is happening in CS'' - pay attention to news related to CS/IT.  One place to look is [http://cacm.acm.org/ Communications of the ACM], and another is the technology section of google news (or yahoo, bing, or wherever you look at news).
* Computer Science Principles - a similar course by Amit Jain at Boise State with much of the content online
 
* Introduction to Computing - a similar course by Nick Parlante at Stanford with much of the content online
''High volume'' - there are very many jobs in CS, and there are also very many people applying for jobs.  Most people will end up applying for lots and lots of positions before getting one.  Applying for jobs in the field of CS is definitely a "high volume" thing - plan on applying early and often.
* HTML tutorial, CSS tutorial, More on CSS, Javascript tutorial
 
* Introduction to Computing: Explorations in  Language, Logic, and Machines by David Evans
''Direct contact'' - if there is an option to contact the HR or recruiter from an ad, you should write a short message to them (in LinkedIn, HandShake, etc.) giving a specific reason why you are interested in the position, a specific reason you think you would be good for it, say that you have applied, and that you would be excited to hear further from them. Sometimes this could help.
* A Computer Science Tapestry by Owen Astrachan
 
* Blown To Bits: Your Life, Liberty and Happiness After The Digital Explosion by Hal Abelson, Ken Leeden and Harry Lewis
== Places to look for jobs ==
Handshake, LinkedIn, Indeed.com, Ascend Indiana, ACM, IEEE, jobs.indstate.edu, sycamore career link, ISU job fairs, stay on the cs-ugrads/cs-grads/cs-alumni email lists, large companies in the geographic area you are applying, check [[Alumni]] for places CS grads have gone previously.  Look at [https://www.careerinfonet.org/oview6.asp?id=&soccode=&stfips=18&from=State&nodeid=12 top employers in Indiana], [http://terrehauteedc.com/economy-a-demographics-terre-haute-indiana/top-employers-terre-haute-vigo-county-indiana top employers in Terre Haute].
 
= References =
You want at least one CS professor, at least one employer (hopefully).  You want people you think will actually do the letter, and do it well.  When you ask someone to be a reference, tell them it is okay if they think they cannot provide a good (positive) reference for you.
 
You ideally would be one of the better students/workers they had (e.g., you got an A- or higher in courses with them).
 
If you have a class with someone who is writing for you, do well in that class.
 
Your references will NOT give you the letter.  They agree to be contacted by employers, and they will give the letter to the employer directly (typically through an online form).
 
Send anything you have used to apply to your letter writers - your resume and cover letter.  If you get an interview with a company, give your letter writers a head’s up that they might be contacted, and let them know anything particular about this job they might need to know.
 
= Resume =
FWIW, a latex resume template - https://www.overleaf.com/latex/templates/jakes-resume/syzfjbzwjncs
 
== Advice ==
''Length'' - make your default resume 1 or 2 pages - either is fine, depends on how much good information you have.
 
''Brag'' - paint yourself in the best possible (though still true) light.  Is there any way to list something on your resume that sounds good?  People will be looking for both quantity and quality.
 
''Ordering'' - normally put your education (expected degree and date) first, and after that put things in the order that looks best.  If you have good relevant work history, put that first (and order the work history from oldest to newest or newest to oldest depending on which looks better for you).  If you have good project experience (e.g., in CS courses) and not so exciting work history, put your projects first.  Etc.
 
''Keywords'' - some companies screen applications using AI / automated searches for keywords and such.  So make sure to include some of the keywords they likely are looking for based on the job ad.  If the ad is for a java programmer, then make sure to have this somewhere in your resume (e.g., under Skills/Languages).
 
== Basic sections ==
''Contact information'' - include a website for more information that looks nice, where you have a copy of your resume, and possibly more.  Include a link to your github (or gitlab or something similar) where you have some of your projects.
 
You can use your permanent CS account for a website.  cs.indstate.edu/~username, you put you rhtml files in ~/public_html/, and make sure files and directory are chmod a+rx
 
''Education'' - list your degree and expected graduation, include your GPA and/or major GPA if it looks good (at least 3.5).
 
''Employment History'' - jobs you have had with most recent first.  Include a bullet point of your responsibilities and/or accomplishments, making it sound good.  If employment history does not sound good at all, don’t put it.  For example, you’ve had one job for one year, and it was McDonald’s. Put more details for the jobs related to CS/IT.
 
''Projects'' - list major projects you have worked on.  Include projects from jobs, projects from courses, and independent projects.  For each, include a bullet point of the main idea (just a phrase or sentence) and any skills/technologies/programming languages/tools used.  For example, you probably had a good sounding project in any Exoo class - interpreter, 3d game, ....  Make it sound good.  You would say “3d OpenGL game”, you would not say “it really wasn’t that good, or was very simple, ...”.  You could have a bullet point that is “Other Projects” and just list some more with no details for these.
 
''Skills and tools'' - laundry list of programming languages and tools.  You can split them into categories - proficient and familiar, or some other categories. If you are applying for something where you really should be good at X, and it is among your better skills, then split up the skills and include X in the “proficient”.  In your “familiar” category, include everything you have seen in all classes, etc.  It’s okay to list if you can say something about it, would be able to answer some basic questions, and would be able to say more by looking up information.  For example, in a PL course, you looked at ML - you could include that.
 
''References'' - available upon request (for your publicly available resume), but for specific jobs maybe put them in. Check with people before listing them.  Generally, only use people that have good things to say.  When asking someone, ask if they would be able to write a positive letter for you.  Best case - a CS professor that has good things to say (you took a course, got an A, were one the best students), and at least one employer (can say you’re responsible, on time, etc.).  Feel free to leave this tiny section out if it helps you fit on 1 or 2 pages; everyone assumes that references are available upon request, so it isn't really necessary to list this on your resume.
 
''Other'' - depending on your experiences, you might have some other section(s).
 
= Cover Letter =
== Basic outline ==
''Header information'' - who to, date, etc.
 
''Introduction paragraph'' - say what job you’re applying for, why applying, one sentence about your background and why you think you’d be good.
 
''Your experience/background'' - just a few sentences saying when you expect to graduate, relevant job experience, etc.
 
''Your thoughts on the position'' - and why you think you would be good.
 
''Signature''
 
That could be just 2 paragraphs.  Don’t stretch the truth.  Don’t say you’re an expert.  Right length cover letter?  More than a few sentences, should fit on 1 page.  1/2 a page is typical.
 
= Interviews =
== General Advice ==
Be prepared to answer questions about anything that is on your resume.  If you can’t answer questions about it, don’t list it.
 
Don’t stretch the truth.  For example, “Are you an expert programmer?”.  Answer - no, I am a good programmer, and still improving.  “How much training do you need to do to do X?”  Answer - honest (one of): I have done that before, so just some getting used to how your company does it; did it in a class, but need to brush up; I have seen that before, and am confident I can do some self-training over a few weeks.  You don’t want to sound unrealistic.  “Rate your programming skills on a 0 to 10 scale.” Answer - 6 or 7 (for the better students), and say that you’re comparing yourself to all kinds of developers, and for example a 6 or 7 means that I can develop code from scratch to do even modestly complicated tasks (and am best at doing XYZ kind of programming).
 
Things that are important that aren’t often covered much or at all in CS courses.
* Accessibility.
* Program design/architecture (e.g., you need to do BLANK, how would you design this system [where store the data, what programs running on the backend and front end, etc.])
* Ethics
* Learn an IDE (start with a tutorial - eclipse or MS Visual Studio)
* Github (and using it "for real" with the checkout, etc. workflow)
 
Use linked in.
 
== Practice ==
https://www.reddit.com/r/cscareerquestions/comments/20ahfq/heres_a_pretty_big_list_of_programming_interview/
 
http://www.nerdparadise.com/tech/interview/
 
https://www.interviewcake.com/google-interview-questions
 
And so forth - search google for things like “computer science interview questions”
 
[http://www.crackingthecodinginterview.com/ Cracking the Coding Interview] and https://www.hackerrank.com/
 
''More Advice'' - [http://www.kegel.com/academy/getting-hired.html Kegel Getting Hired]
 
= Alumni Advice =
''A few things you look for in hiring entry level positions.''
* Have had an internship or coop with a good company with hands on experience
* Good communication, can understand a project assignment / scope of work
* Strong in data structures / algorithms (especially for interviews)
* If interested in commercial/management side then should consider an MBA as well
 
''Pick one course in the CS major you would hope students really do well in.''
* Core data structures and algorithms / programming courses, fundamentals
* A difficult class that you are interested that you will work hard at and end up with a good project experience
* Programming languages - different ways of thinking, exposed to different languages
 
''Some fashionable areas/topics currently''
* Robotics, cybersecurity, containerization (microservices, docker), web/javascript
 
''General advice''
- Be excited about the opportunities you have, your first job does not have to be your dream job, as long as it gives you experience and moves you forward.

Latest revision as of 13:22, 17 August 2025

Catalog Description

The main focus of the course is to give students a practical understanding of computing to become well-informed citizens and professionals in the computing age. Topics may include a basic study of - computational thinking, computer security, big data, artificial intelligence, and current trends in computing.

Prerequisites

Typing and basic computer use - web browser, email, etc.

Standard Content

Course Outline

We will spend 1-2 weeks on each of the following topics:

  • What is inside a computer: CPU, RAM, hard drive, etc.
  • Internet 101: how data is moved around the internet
  • Computer and internet security: how do you know your data is secure?
  • Servers and such: logging into a server, transferring files
  • Html basics: creating web pages, a little bit of javascript
  • Block programming: scratch.mit.edu, code.org, blocky
  • Computational problems: things computers can do really well, and things that are impossible for computers to solve
  • Artificial intelligence: different meanings of the term, examples

Learning Outcomes

The following are the most important learning outcomes for each of the 8 topics listed in the course outline.

  • What is inside a computer
  • Name the different components that make up a computer.
  • Describe what the terminology associated with a component means (e.g., Ghz for CPU’s is the speed of the CPU, GB for the size of a hard drive).
  • Evaluate the tradeoffs between different components (e.g., one CPU versus another)
  • Internet 101
  • Explain the basic infrastructure of the internet and associated terminology.
  • Explain the infrastructure of a home network, and be able to configure a home network.
  • Explain how web browsing and email works, in terms of which parties are involved (e.g., server and client), where data is stored, and what communication is involved.
  • Computer and internet security
  • Explain the concepts of encryption/decryption, digital signing, and the difference between public-key and private-key encryption.
  • For given situations, be able to say whether a given interaction is secure or not.
  • Know the key terminology of internet security (e.g., rsa, sha, https, etc.).
  • Servers and such
  • Explain what servers are used for
  • Be able to log in to a server to transfer files to a server, and login via ssh to issue commands to the server
  • How is data stored on a server, and how do we access data
  • Html basics
  • Explain the basic structure of an html document, and understand that an html document is a plain text file that has markup tags to say how to display different parts of the webpage.
  • Be able to create simple html webpages.
  • Be able to put webpages onto a web server.
  • Block programming
  • Understand the concept of a computer program as instructions for the computer.
  • Be able to design simple programs in a graphical programming environment (one where there is no possibility for syntax errors, e.g., scratch).
  • Computational problems
  • Explain some examples of computational problems, and understand how problems are framed (input to the problem, correct output, running time of finding the solution).
  • Basic skills in evaluating efficiency of an algorithm.
  • Explain some examples of computational problems that either cannot be solved, or require inordinate amount of time to solve (e.g., halting problem).
  • Artificial intelligence
  • Understand the concept of the “Turing test” as a test of artificial intelligence.
  • Know the history of some famous examples of “artificial intelligence” (e.g., chess playing, Jeopardy playing, chat-bots).
  • Explain some examples of artificial intelligence techniques (e.g., spam filtering, facial recognition, expert medical systems).

Important Assignments and/or Exam Questions

  • TODO

Standard resources

  • The Beauty and Joy of Computing - course on CS Principles, including programming in SNAP
  • Computer Science Principles - a similar course by Amit Jain at Boise State with much of the content online
  • Introduction to Computing - a similar course by Nick Parlante at Stanford with much of the content online
  • HTML tutorial, CSS tutorial, More on CSS, Javascript tutorial
  • Introduction to Computing: Explorations in Language, Logic, and Machines by David Evans
  • A Computer Science Tapestry by Owen Astrachan
  • Blown To Bits: Your Life, Liberty and Happiness After The Digital Explosion by Hal Abelson, Ken Leeden and Harry Lewis