面向计算机科学的数理逻辑_2020年面向计算机科学专业学生的10条专业提示

面向计算机科学的数理逻辑

成功秘诀 (TIPS FOR SUCCESS)

As we approach late august, the time is coming for college classes to kick off again. Whether your school is online or in-person, I believe there’s a handful of things you can do to make this year a success. This article is a culmination tips targeted at Computer Science majors to help them have a successful year. This information has been curated from my four years of learning at university, along with various pieces of advice from other students, graduates and professors.

随着八月下旬的到来,是时候重新开始上大学了。 无论您的学校是在线的还是面授的,我相信您都可以做很多事情来使今年取得成功。 本文是针对计算机科学专业的高潮技巧,以帮助他们度过成功的一年。 这些信息来自我在大学四年的学习,以及其他学生,毕业生和教授的各种建议。

  1. You don’t need to know how to program yet. And here’s proof!

    您还不需要知道如何编程。 这就是证明!

Trust me, you don’t need to know how to program going into a CS degree. Hell, the degree wouldn’t exist if everyone was expected to come in knowing what they are doing already. Want proof of that? Here’s Exhibit A:

相信我,您不需要知道如何进行CS学位编程。 地狱,如果希望每个人都知道自己已经在做什么,那么学位就不会存在。 想要证明吗? 这是展览A:

This is my first personal project I made halfway through freshman year. This is a suuuuper simple sorting program. Like 100 lines of code simple. But, at the time I was super proud of it and thought I had discovered some new amazing algorithm. The reason I’m sharing this is because the fact that I was proud enough of this tiny project to put it on Github should show how little I knew going into my CS degree.

这是我在大一中途完成的第一个个人项目。 这是一个suuuuper简单的排序程序。 就像100行代码一样简单。 但是,当时我对此感到非常自豪,并以为自己发现了一些新的惊人算法。 我之所以分享这一点,是因为我为这个小项目感到骄傲,可以将其放到Github上,这表明我对进入CS学位的了解很少。

Now, just over 3 years later, I have a mobile app launched on the app store and have done various other medium-sized projects in the past 2 years. The path from bubble sort to app store can be a hard one, but trust me it’s attainable. School will do a good job of teaching you the basics, so don’t worry about how much you know going into the major. After you learn the fundamentals, it’s up to you to gain more knowledge before you graduate. My other tips are aimed at helping you do that.

现在,仅仅3年多以后,我在应用商店上发布了一个移动应用,并在过去2年中完成了其他各种中型项目。 从冒泡排序到应用商店的路径可能很难,但请相信我是可以实现的。 学校会很好地教您基础知识,所以不必担心您对专业的了解程度。 在学习了基础知识之后,您才有可能在毕业之前获得更多的知识。 我的其他技巧旨在帮助您做到这一点。

2. Ride the wave to mastery

2.驾驭精通

If you’re like me then you’ll constantly feel like you’re in one of these two camps as you embark on your journey. Although it’s pretty awesome to feel like a god all the time, it’s not practical and you’re bound to get stuck over and over again.

如果您像我一样,那么在踏上旅途时,您会不断觉得自己在这两个营地中的一个。 尽管一直感觉像上帝是很了不起的,但它不切实际,而且您肯定会一遍又一遍地陷入困境。

I like to think of this paradigm as just riding the wave to mastery. You have to ride the up’s and down’s, but what you’ll find is the general long-term trend will be an upward slope to mastery as you learn more things.

我喜欢将这种范式视为驾驭精通。 您必须上下波动,但是随着学习更多的知识,您会发现总体的长期趋势将是精通掌握。

My advice here would be to not get discouraged during the hard parts of the learning process. It takes a long time to learn these skills, so just relax and ride the wave.

我的建议是不要在学习过程中遇到困难。 学习这些技能需要很长时间,因此只需放松并乘风破浪即可。

3. Learn in public

3.公开学习

This is a concept I’m trying to do more and more. It’s the idea that whenever you’re learning something new you should do it in a public context. So if you’re developing an app, build it in a way where others can follow your journey. You can do this by posting a weekly blog on medium or dev.to, or posting a daily update on twitter, or even making a youtube channel and sharing your learnings there.

这是我正在尝试做的越来越多的概念。 它的想法是,每当您学习新知识时,都应该在公共环境中进行。 因此,如果您正在开发应用程序,请以其他人可以跟随您的旅程的方式来构建它。 您可以通过在medium或dev.to上发布每周博客,或在Twitter上发布每日更新,甚至建立youtube频道并在此处分享您的经验来做到这一点。

This has 2 benefits because:

这有两个好处,因为:

  1. Employers LOVE this. Companies know that no intern is going to be a master of their craft and that’s not what they’re looking for either. Companies are looking for someone who’s good at learning, good at communicating, and passionate for what they’re doing. There’s no better way to exemplify all these qualities than to have a repository of your thoughts and say “Look! This is everything I’ve learned this past year.”

    雇主喜欢这个。 公司知道没有实习生会精通手艺,这也不是他们要找的人。 公司正在寻找一个善于学习,善于沟通并且对自己的工作充满热情的人。 要想拥有所有这些特质,没有比储存您的想法并说“看! 这就是我去年学到的一切。”

  2. This will make you a better learner. Having a set-time each week where you sit down and reflect on what you learned and share a piece of that to the world helps you solidify that knowledge. It’s also very motivating to see other people be engaged in the problems you’re working on will give you the drive to keep going.

    这将使您成为一个更好的学习者。 每周有一个固定的时间坐下来,反思所学到的知识,并将其分享给全世界,可以帮助您巩固这些知识。 看到其他人参与到您正在研究的问题中来,这会激励您继续前进。

4. You Need a Personal Website

4.您需要一个个人网站

This is key. If you’re going to “learn in public” it’s a good idea to make a personal website that can give people one central place to view all the cool things you’re up to. This is also a great programming project too, because it’s something that you can make as simple or complicated as you want and once you finish it you can easily share it to the world.

这是关键。 如果您要“公开学习”,那么创建一个个人网站是一个好主意,该网站可以使人们在一个中央位置查看您想做的所有很酷的事情。 这也是一个很棒的编程项目,因为您可以根据自己的意愿使它变得简单或复杂,完成后就可以轻松地将其分享给全世界。

Bonus Tip: Don’t be a perfectionist when building this website. I’ve redone my website 3 times in 3 years and plan to redo it again in the near future. It’s more important to have a website than to have a perfect one.

温馨提示:建立此网站时,不要成为完美主义者。 我已经在3年内重做了3次网站,并计划在不久的将来再次重做。 有一个网站比拥有一个完美的网站更为重要。

I have some classmates who built theirs with plain HTML and it works great! Hell I have professors who’s websites are built in plain HTML. If you don’t have an interest in design, making it minimal and purely functional is a great path to take.

我有一些同学用纯HTML构建他们的同学,效果很好! 地狱,我有教授的网站是用纯HTML构建的。 如果您对设计不感兴趣,则使其最小化和纯功能化是一条不错的选择。

5. Make Use of Free Student Perks!

5.利用免费的学生津贴!

Take advantage of all your student discounts! You can ride these discounts really far and likely never have to pay for any cloud-hosting before you graduate. You can find these deals everywhere, but my favorite place to view student perks is Github Student Developer Pack. Some of my favorite deals from this:

利用您所有的学生折扣! 您可以真正享受这些折扣,而且毕业之前可能无需支付任何云托管费用。 您可以在任何地方找到这些优惠,但是我最喜欢查看学生津贴的地方是Github Student Developer Pack 。 我最喜欢的一些交易:

  • $100 of AWS Credits for Cloud Services

    100美元的AWS Clouds积分

  • Free GitHub Pro While a Student

    学生时免费GitHub Pro

  • Free Year of a NameCheap .me Domain Name

    免费年的NameCheap .me域名

  • $50 of Free DigitalOcean Cloud Hosting

    50美元的免费DigitalOcean Cloud Hosting

  • $200 of Free MongoDB Atlas Credits

    $ 200的免费MongoDB Atlas积分

… and more!

… 和更多!

6. Learn the Difference Between the 3 Types of Computer Science Classes

6.了解三种计算机科学课程类型之间的区别

The Computer Science major has really 3 different types of classes. It’s important to know the difference between these because some of these areas may not be as interesting to you and that’s okay.

计算机科学专业实际上有3种不同类型的课程。 重要的是要知道它们之间的区别,因为其中一些领域可能对您而言并不那么有趣,而且还可以。

Algorithm Courses (ex. Discrete Math, Finite Automata, Data Structures)

算法课程 (例如离散数学,有限自动机,数据结构)

  • These classes are what people are talking about when they say the Computer Science major has a lot of “math” in it. These classes are similar to math classes and teach you more of the theoretical-side of Computer Science. They’ll teach you how to develop algorithms, how to write proofs, data structures and more. If you love these classes they can be a path towards grad school, a PHD, teaching, or research fields.

    当人们说计算机科学专业包含很多“数学”时,这些课程就是人们在谈论的内容。 这些课程与数学课程相似,可以教您更多计算机理论方面的知识。 他们将教您如何开发算法,如何编写证明,数据结构等。 如果您喜欢这些课程,它们可能是通往研究生院,攻读博士学位,教学或研究领域的途径。

Hardware / Low-Level Courses (ex. Operating systems, Computer Networks, Computer architecture)

硬件/低级课程(例如,操作系统,计算机网络,计算机体系结构)

  • These classes teach you what’s going on in internally in a computer. You’ll learn stuff such as CPU scheduling, networking, assembly programming, operating systems, permissions, etc etc. If you like these classes, this can lead you into a career doing computer engineering, robotics, OS design, or more.

    这些课程教您计算机内部发生的事情。 您将学习诸如CPU调度,网络,汇编程序,操作系统,权限等内容。如果您喜欢这些课程,则可以带您进入从事计算机工程,机器人技术,OS设计等工作的职业。

Programming Courses (ex. Software Analysis & Design, Software Engineering)

编程课程 (例如,软件分析与设计,软件工程)

  • These courses will teach you how to write software. In these classes you’ll learn object-oriented design, design patterns, databases, frontend design, git, project management and more. If you like these classes, they can lead to a career in web design, game development, backend engineer, software engineer and more. There’s so many options it would be too many to list.

    这些课程将教您如何编写软件。 在这些课程中,您将学习面向对象的设计,设计模式,数据库,前端设计,git,项目管理等。 如果您喜欢这些课程,他们可能会导致您从事网页设计,游戏开发,后端工程师,软件工程师等职业。 有太多的选择,所以太多了。

All of these classes are important. You’ll find that the concepts of one will tie into another so pay attention to everything. You might first be introduced to a hypothetical concept in your algorithms class (like big-O notation), then later see it cropped up in a programming class (For determining the best way to structure your SQL query). That’s typical and it’s the reason all these classes exist.

所有这些类都很重要。 您会发现一个概念将彼此联系在一起,因此请注意所有事项。 您可能首先在算法类中引入了一个假想的概念(例如big-O表示法),然后在编程类中看到了它(用于确定构造SQL查询的最佳方法)。 这是典型的,这就是所有这些类都存在的原因。

Bonus Tip: Don’t load up your schedule with too many of 1 type of class in the same semester or you might get overwhelmed with too much of the same type of workload. This depends on the specific class, but it’s generally a good rule to follow.

温馨提示:不要在同一学期给太多类型的1类课程加班,否则您可能会因太多相同类型的工作量而感到不知所措。 这取决于特定的类,但这通常是一个很好的规则。

7. Complete projects and labs early.

7.尽早完成项目和实验室。

Some courses can be very project based. Each of my programming-focused courses had about 8 labs and 5 or 6 projects of varying difficulty. This can be super stressful if you leave these to the last couple days, especially considering you probably won’t know what you’re doing.

有些课程可以非常的项目为主。 我每个以编程为重点的课程都有大约8个实验室和5个或6个难度各异的项目。 如果您将这些保留到最后几天,这可能会带来极大压力,尤其是考虑到您可能不知道自己在做什么。

It helps to develop a pattern. I eventually got a pattern down of trying to complete projects the weekend before they were due and this helped a lot. This gives you the ability to step away and refresh your brain then come back and tackle a problem later. I still do this today!

它有助于发展模式。 最终,我在尝试在项目到期前的周末完成项目时遇到了麻烦,这很有帮助。 这使您能够走开并刷新大脑,然后再回来解决问题。 我今天仍然这样做!

8. Learn the Command-Line. It pops up everywhere.

8.学习命令行。 它随处可见。

Mastering the unix command-line is one of the most practical skills you can learn in college. You should learn how to create, edit and delete files, navigate directories, move files around, edit documents with vim, and shell into other computers. This might not seem like the most important thing to learn at the time, especially if you’re thinking “No but I don’t need a command-line for X”, but the fact is that everyone will need the command line to use git repositories, ssh into your production environment, etc. It’s unavoidable.

掌握UNIX命令行是您可以在大学中学到的最实用的技能之一。 您应该学习如何创建,编辑和删除文件,浏览目录,移动文件,使用vim编辑文档以及将shell移植到其他计算机中。 这在当时似乎并不是最重要的事情,特别是如果您在考虑“不,但我不需要X的命令行”时,这似乎是最重要的事情,但事实是每个人都需要使用命令行git储存库,ssh到您的生产环境等。这是不可避免的。

9. Build a “Capstone Project” each semester

9.每学期建立一个“顶点项目”

This has been my favorite way to work on my programming skills. After each semester when I’m on Christmas or summer break I’ll build a “Capstone Project” that solidifies everything I learned. This is a great way to stay in the habit of programming, build your resume, and build something that you actually want to use!

这是我最喜欢的编程技能工作方式。 每个学期结束后的圣诞节或暑假,我将建立一个“顶峰项目”,巩固我学到的所有知识。 这是保持编程习惯,构建简历以及构建实际想要使用的东西的好方法!

One of my favorites of these projects is my Spotify web app that lets me view my most listened to tracks and artists:

这些项目是我最喜欢的项目之一,是我的Spotify网络应用程序,它使我可以查看听得最多的曲目和艺术家:

My Spotify Web App 我的Spotify网络应用

Doing projects you’re interested like this will make it something you want to finish so my recommendation is to build something that YOU want to use. Even if it already exists, that doesn’t matter. Just build what you would use.

这样执行您感兴趣的项目将使其成为您想要完成的事情,所以我的建议是构建您想要使用的东西。 即使已经存在,也没关系。 只需构建您将要使用的内容即可。

10. Internships are Attainable.

10.实习是可以实现的。

The job environment might be changing due to COVID, but trust me there will still be internships available. The key is to know where to find them and how to have the skills they’re looking for in candidates. If you do the other items on this list, such as learn in public, have a personal website, and build capstone projects, you’ll be an attractive intern no matter what year you are.

由于COVID,工作环境可能正在改变,但是请相信我,仍然会有实习机会。 关键是要知道在哪里找到他们,以及如何在求职者中拥有他们所寻找的技能。 如果您执行此列表上的其他项,例如在公共场所学习,拥有个人网站并建立顶峰项目,那么无论您在哪一年,您都将是一个有吸引力的实习生。

Here’s some other tips I have for getting internships:

这是我获得实习生的其他技巧:

  1. Get out of the mindset that you’re “not prepared” for an internship. Everyone is still learning through college so let the companies be the judge of if you’re prepared or not, don’t make that decision for them.

    摆脱思维方式,即您没有为实习做好“准备”。 每个人都还在通过大学学习,所以让公司来判断您是否准备好了,不要为他们做出决定。
  2. There’s always internship opportunities popping up. I started applications around October last year and got an internship in November. Some students started even earlier. The summer before that I got my internship during finals week right before summer. New opportunities are popping up all the time, so be on the lookout consistently through the school year.

    总是有实习机会冒出来。 我于去年10月左右开始申请,并于11月获得了实习机会。 一些学生甚至更早开始。 在那之前的夏天,我在夏天之前的决赛周获得了实习。 新的机会一直在涌现,因此在整个学年要始终保持警惕。
  3. Use State-Funded Internship boards if available. If you live in Minnesota, https://scitechmn.org/ is a great resource that I recommend. Local internship boards have a smaller competition pool and give you a more personal application process than something like Indeed.

    如果可能的话,使用州政府资助的实习委员会。 如果您居住在明尼苏达州, https://scitechmn.org/是我推荐的绝佳资源。 与Indeed相比,本地实习委员会的竞争池更小,并且为您提供了更为个性化的申请流程。

谢谢阅读! (Thanks for reading!)

I hope you find this valuable and if you have any more tips please share them in the comments!

希望您觉得这很有价值,如果您还有其他提示,请在评论中分享!

Check me out: https://spencerpauly.com

检查我: https : //spencerpauly.com

翻译自: https://medium.com/@spencerpauly/10-pro-tips-for-incoming-computer-science-students-in-2020-d115945c7584

面向计算机科学的数理逻辑

你可能感兴趣的:(java,https,python)