- Ajax
- Ajax
- AJAX
- Android
- API
- caching
- Cloud standards
- Computing
- HTML
- HTML
- hybrid solution
- internet connection
- James Pearce
- JavaScript
- JSON
- JSON
- Markup languages
- mobile devices
- offline enabled web site/apps
- offline web sites
- Paul Kinlan
- php
- Representational State Transfer
- Ruby
- Software architecture
- software developer
- Software engineering
- Southampton
- Technology
- technology works
- United Kingdom
- View
- Web application
- web apps
- Web development
- web sites/apps
- World Wide Web
I've started doing interviews for internships, as I'm aspiring to get one this summer. However, I've done horrible on them.
I got A+ in my classes. I could implement and use data structures efficiently. I understood the algorithms presented to me. But I feel this wasn't/isn't an accurate measurement of my problem solving skills.
When presented with new algorithms or problems I have never encountered before, my brain stops working. I can rarely figure out the solutions all by myself. I always have to consult online references or other people's code, and I feel this doesn't make me better. I'm simply memorizing how other people got to it.
I've even bought books (Cracking the coding interview). I can't solve many of the problems they present. I have to read the solutions, then I get it (who wouldn't /eyeroll). But this is not helping me become better.
I've also worked on several projects related to web programming (creating user systems, forums) and game programming (simple 2D games with networking capabilities). I've learned a lot from these projects. But most of what I've learned concerns APIs and technologies (DirectX, MySQL, Winsock) and how they work. I rarely ran into having to implement or solve a puzzle type algorithms (maybe it's because I never got into doing advanced AI?) It's all been about understanding how a specific technology works. And if I had to use something complicated, I just used libraries which already implementing what I had to do.
tl;dr - got good grades and understood all concepts in comp.sci. courses. Have had plenty of non-academic programming/project experience. Have read books on algorithms. BUT I still suck at them if presented with one I haven't previously seen the solution to.
So does anyone have any tips on improving my algorithm skills that doesn't include trying to solve them and looking up a solution when I fail?
Thanks for all the advice. I really appreciate it. I'll start working on "easy" problems and go at them until I get at least a brute force solution. From there I'll try and clean up my code/solution. I'll try not to resort to looking at solutions in the same 48 hours of having started a problem at least.
Again, thanks for the advice. And for those of you who also struggle, it's good to know I'm not alone ;)
submitted by compsci_1234
[link] [34 comments]
- Algorithm
- Applied mathematics
- arbitrary solutions
- artificial intelligence
- brute force solution
- code/solution
- Complexity classes
- Computational complexity theory
- cryptography
- Dynamic programming
- good problem solving tool
- M.I.T
- machine learning
- Mathematical optimization
- Mathematics
- mathematics/optimized algorithms
- mathematics/optimized algorithms
- MySQL
- online judges
- online references
- Operations research
- P versus NP problem
- possible solutions
- puzzle type algorithms
- puzzle type algorithms
- Search algorithms
- search parameters
- software engineering
- Structural complexity theory
- technology works
- Theoretical computer science
- user systems
The whole "everyone should learn programming" meme has gotten so out of control that the mayor of New York City actually vowed to learn to code in 2012.
A noble gesture to garner the NYC tech community vote, for sure, but if the mayor of New York City actually needs to sling JavaScript code to do his job, something is deeply, horribly, terribly wrong with politics in the state of New York. Even if Mr. Bloomberg did "learn to code", with apologies to Adam Vandenberg, I expect we'd end up with this:
10 PRINT "I AM MAYOR" 20 GOTO 10
Fortunately, the odds of this technological flight of fancy happening – even in jest – are zero, and for good reason: the mayor of New York City will hopefully spend his time doing the job taxpayers paid him to do instead. According to the Office of the Mayor home page, that means working on absenteeism programs for schools, public transit improvements, the 2013 city budget, and … do I really need to go on?
To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing, and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder? It is obvious to me how being a skilled reader, a skilled writer, and at least high school level math are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can't see it.
Look, I love programming. I also believe programming is important … in the right context, for some people. But so are a lot of skills. I would no more urge everyone to learn programming than I would urge everyone to learn plumbing. That'd be ridiculous, right?
The "everyone should learn to code" movement isn't just wrong because it falsely equates coding with essential life skills like reading, writing, and math. I wish. It is wrong in so many other ways.
- It assumes that more code in the world is an inherently desirable thing. In my thirty year career as a programmer, I have found this … not to be the case. Should you learn to write code? No, I can't get behind that. You should be learning to write as little code as possible. Ideally none.
- It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it's not. Their job is to solve problems. Don't celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.
- It puts the method before the problem. Before you go rushing out to learn to code, figure out what your problem actually is. Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?
- It assumes that adding naive, novice, not-even-sure-they-like-this-whole-programming-thing coders to the workforce is a net positive for the world. I guess that's true if you consider that one bad programmer can easily create two new jobs a year. And for that matter, most people who already call themselves programmers can't even code, so please pardon my skepticism of the sentiment that "everyone can learn to code".
- It implies that there's a thin, easily permeable membrane between learning to program and getting paid to program professionally. Just look at these new programmers who got offered jobs at an average salary of $79k/year after attending a mere two and a half month bootcamp! Maybe you too can teach yourself Perl in 24 hours! While I love that programming is an egalitarian field where degrees and certifications are irrelevant in the face of experience, you still gotta put in your ten thousand hours like the rest of us.
I suppose I can support learning a tiny bit about programming just so you can recognize what code is, and when code might be an appropriate way to approach a problem you have. But I can also recognize plumbing problems when I see them without any particular training in the area. The general populace (and its political leadership) could probably benefit most of all from a basic understanding of how computers, and the Internet, work. Being able to get around on the Internet is becoming a basic life skill, and we should be worried about fixing that first and most of all, before we start jumping all the way into code.
Please don't advocate learning to code just for the sake of learning how to code. Or worse, because of the fat paychecks. Instead, I humbly suggest that we spend our time learning how to …
- Research voraciously, and understand how the things around us work at a basic level.
- Communicate effectively with other human beings.
These are skills that extend far beyond mere coding and will help you in every aspect of your life.
[advertisement] How are you showing off your awesome? Create a Stack Overflow Careers profile and show off all of your hard work from Stack Overflow, Github, and virtually every other coding site. Who knows, you might even get recruited for a great new position!
- Adam Vandenberg
- Amazon.com
- basic car repairs
- bioinformatics
- Bloomberg LP
- BOC
- C
- C++
- car engine works
- chemicals
- community site
- computing
- Cory Doctorow
- CSS filter
- data processing
- Don
- electricity
- food
- Frederick Douglas
- GitHub
- High School
- HTML
- HTML
- HyperCard
- India
- information technology
- information technology
- Internet Explorer
- Internet works
- Java
- Java
- JavaScript
- Jeannette Wing
- junk food
- Linux
- metal
- Michael Bloomberg
- middle management
- Mike Bloomberg
- Neil deGrasse
- New
- New York City
- NYC
- office software
- operating system
- paint
- Procedural parameter
- Python
- real-world infrastructure
- Robert A. Heinlein
- Ruby
- software addicts
- software developer
- software developers
- software development
- stupid technology laws
- T.Y.S.O.N.
- technology
- technology works
- Ted "tube" Stevens
- ultimate tool
- United Kingdom
- United States
- Visual Basic
- Well-designed software
- word processor
- word processor
Scientists at Carnegie Mellon have invented software that promises a significant improvement in English-speaking ability in just 10 hours.
The software, Carnegie Speech, is already widely available. Their CEO, Paul Musselman, told us their technology is superior to other programs because it can actually identify speech problems and tailor the program to the customer.
Musselman is the newly-appointed CEO of the company, which just raised $3.4 million in series B financing.
Current language-learning softwares, the most famous being Rosetta Stone, just train people to mimic pre-recorded speeches.
The technology works by picking up a persons' speech patterns with a microphone and identifying the areas where they struggle most. Then, it creates an instantly-customized program.
Customers include international airline pilots, who need language skill to be certified, hospitality workers and customer service representatives.
"English is exponentially the largest foreign language in demand worldwide," Musselman told us. "This technology is a game-changer."
The software costs $300 for an individual or $2000 for a business or college.
Wondering what the landscape for stereoscopic 3D games looks like? This in-depth article examines platforms, display technologies and middleware, to offer a look at the landscape for developers planning to implement 3D into their games.
- 3D display
- 3D imaging
- 3D technologies
- 3D technologies
- 3D television
- active systems
- Darkworks SA
- display technologies
- display technologies
- fundamental technologies
- fundamental technologies
- Glasses
- Guillaume Gouraud
- hot new technology
- Imaging
- LG
- Microsoft
- Nintendo
- Optics
- passive technology
- PlayStation 3
- Polarization
- Polarized 3D glasses
- RealD Cinema
- Sony
- Stereopsis
- Stereoscopy
- technological solutions
- Technology
- technology works
- Understanding 3D Technologies
- universal law
- Video
- Vizio
- Wilhelm Rollmann