toblick
/
cs101
/
course overview
class: center, middle # Welcome Intro to Computer Science --- # Introductions --- ## This course Introduction to Computer Science - Syllabus: [syllabus](../../syllabus) - Schedule: [schedule](../../schedule) --- ## This course Official description: > How to design algorithms to solve problems and how to translate these algorithms into working computer programs. Experience is acquired through projects in a high-level programming language. Intended primarily for computer science majors but also suitable for students of other scientific disciplines. Programming assignments. --- ## Motivational Quotes > I shall use the word programming to denote the whole activity of design and implementation of programmed solutions. What I am concerned with is the activity of matching some significant part and aspect of an activity in the real world to the formal symbol manipulation that can be done by a program running on a computer. > > – [Peter Naur](https://en.wikipedia.org/wiki/Peter_Naur), Programming as Theory Building (1985) --- ## Motivational Quotes > I’m personally convinced that computer science has a lot in common with physics. Both are about how the world works at a rather fundamental level. The difference, of course, is that while in physics you’re supposed to figure out how the world is made up, in computer science you create the world. > > – [Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds), Just for Fun: The Story of an Accidental Revolutionary (2001) --- ## Me Tobias Blickhan tobias.blickhan@nyu.edu Warren Weaver Hall 402 (251 Mercer St, New York) --- ## You - Probably an aspiring programmer. - Perhaps an aspiring computer scientist. - Hopefully interested in making things and solving problems. - Willing to spend hours by yourself reading and staring at code. --- ## Some key concepts ahead - Data types: integers, floats, lists, ... -- - Representing numbers in memory -- - Control flow: if/else, loops, boolean logic -- - Object-oriented programming -- - Compilers, interpreters, assemblers -- - Deep and shallow copies -- - Abstraction layers, interfaces -- - Recursion --- # You can place out of this class If you are comfortable with multi-dimensional arrays, object-oriented programming, and recursion, consider taking a placement exam to skip this course. See the [placement exams](https://cs.nyu.edu/home/undergrad/placement_sample_exams.html). --- # How this course works --- ## Lecture I will speak for 75 minutes about twice each week.... that's 150 minutes of talking each week. -- Please do interrupt me and ask questions. Lectures are more effective when they are not a monologue. --- ## Notes There are notes for most lecture topics by [Amos Bloomberg](https://knowledge.kitchen/). They are very useful but they are under construction. --- ## Slides The slides are available on the [schedule](../../schedule). The slides are more of a table of contents of the lecture and are not meant to replace a textbook or the example code. --- ## Reading There are many resources available in the form of textbooks, blog articles, the [java docs](https://docs.oracle.com/en/java/), video tutorials, .... See what works best for you. --- ## Assignments You will have somewhere around 7 assignments. Extensions are available on request. --- ## Quizzes There will be multiple-choice online quizzes. These are meant to help you practice and do not influence your grade. In-class quizzes are there for you to check your knowledge before the exams. You will have an idea of when they will take place. --- ## Exams You will take 3 exams. --- ## Practice This course is a bit like a mix between a language class and a math class. A lot of it is "learning by doing". The vast majority of your exam prep should be writing code and working on coding problems. I do not plan to ask you memorization questions. You will be allowed a sheet of notes in exams and quizzes. -- Practice problems can be found - in the [corresponding repo](https://github.com/ToBlick/cs101-examples/tree/main), along with my exams from previous semesters - on online programming learning platforms (these are very popular for anyone practicing for interview questions) - by asking your favorite LLM to generate you some - by talking to your fellow students --- ## Grading - 10% assignments - 20% in-class quizzes - 20% first exam - 20% second exam - 30% third exam --- ## How tough is this course? Programming can feel very binary: things work or they do not. This can be both very rewarding and very frustrating. -- On a scale from 1 (easy) to 5, the course is usually rated 4 - 5 in previous semesters. Note that these are ratings from those students who did not end up dropping the course. -- The exams are challenging. The idea behind this is that small errors, "typos" and oversights do not drag down your grade much. --- ## Communication Announcements concerning the course will be posted on Brightspace. There is also a discussion forum there. You can always talk to me before or after class. If you want to meet outside of those times, please reach out via email. --- ## Tutoring Tutors are available to answer your questions and help you with anything related to the course. The tutoring schedule is released on Brightspace. --- # What to do now --- # What to do now ## Check the syllabus The [syllabus](../../syllabus) contains basic information on how this course works. --- # What to do now ## Bookmark the schedule The [schedule](../../) contains a day-by-day breakdown of everything you need to know and do in this course. --- # What to do now ## Download JDK The Java Development Kit (JDK) is a necessary set of tools that help develop Java programs. Install the Standard Edition (SE) Version 17. Assignments will be tested against Java 17. --- # What to do now ## Install a shell - Windows (WSL): - [Install WSL](https://learn.microsoft.com/en-us/windows/wsl/install) - If using VSCode: [Set VSCode to use WSL Bash](https://devblogs.microsoft.com/commandline/tips-and-tricks-for-linux-development-with-wsl-and-visual-studio-code/#setting-the-default-shell) - alternatively: Windows (Git) - [Install Git for Windows](https://gitforwindows.org/). - To set Git Bash up in VSCode [the second answer here](https://stackoverflow.com/questions/42606837/how-do-i-use-bash-on-windows-from-the-visual-studio-code-integrated-terminal) by **Mahade Walid** and edited by **FruityOatyBar** (ignore the first answer, which is outdated). - Linux and Mac users already have a UNIX command shell in the form of the terminal. --- ## LLMs
--- ## LLMs
It is a good idea to get accustomed to LLM/AI tools without becoming fully dependent on them. You won't have access to an LLM during exams. --- # Conclusions -- - Welcome!