Computer programmers are highly trained professionals who write and test code that allows computer systems to function properly. These workers must be proficient in many programming languages and have strong creativity and analytical skills. Many companies that rely on technology to store data and carry out business functions employ these professionals.

Why Pursue a Career in Computer Programming?

A career in computer programming requires an aptitude for technology, science, and math. Additionally, patience and problem-solving skills are essential, as writing and testing code is a complex and sometimes stressful process.

Like most technology fields, computer programming takes commitment and dedication to master. Individuals who are considering this career should have a strong desire to learn and continuously improve their programming competencies. Computer systems and software technologies are constantly being updated, so you should be looking for new industry information throughout your career.

Computer Programming Career Outlook

Computer programming is a lucrative profession. According to the Bureau of Labor Statistics (BLS), computer programmers earned a median annual salary of $86,550 in 2019 — more than double the median wage for all occupations ($39,810).

However, although computer programmers benefit from high earning potential, the BLS projects that employment for this position will decline by 9% from 2019 to 2019. Many companies are deciding to offshore their programming needs, as programming tasks can be completed anywhere around the world.

While the demand for computer programmers is in decline, individuals who earn a computer programming degree develop many computer skills that can be transferred to other in-demand technology careers, such as software developer, web developer, and computer support specialists. The BLS projects these occupations to grow by 22%, 8%, and 8%, respectively, from 2019-2029 — this is much faster than the projected growth rate for the average occupation in the U.S.

Average Annual Salary for Computer Programming Careers
Job Title Entry-Level (0-12 months) Early Career (1-4 Years) Midcareer (5-9 Years) Experienced (10-19 Years)
Computer Technical Support Specialist $40,650 $44,330 $48,580 $52,770
Web Developer $50,480 $57,710 $66,670 $71,120
Software Developer $62,350 $68,890 $82,040 $91,400

Source: PayScale

Skills Gained With a Computer Programming Degree

You can gain many of the skills needed for a career in computer programming on your own through online tutorials, self-instruction, and guided practice. However, a college degree or professional certification validates these skills to future employers or clients. Formal education or training also provides opportunities to develop skills in areas like project management or budgeting.

Below, you can read about five skills essential to the success of aspiring computer programmers.

Coding

Computer programmers must know at least one programming language, such as Java, Swift, Python, or C++. These languages allow programmers to create instruction sets or algorithms that direct computers to perform calculations based on inputs and outputs. Software applications are made up of many of these instruction sets. Most companies seek programmers who can code in two or more languages.

Logic

Success as a computer programmer relies heavily on conditional thinking, commonly referred to as "if this, then that." Programmers use logic to create adaptability and interactivity within a computer application. Logic also plays a key role in troubleshooting code errors and other problem-solving tasks.

Problem-Solving

Meeting needs and solving problems drives the work of computer programmers. A small error in a piece of code can sometimes lead to catastrophic failure. Once programmers develop code, they maintain and improve it to add features and fix bugs, some of which may only occur in specific and rare circumstances.

Research

Programmers need strong research skills for a variety of tasks, including learning new computer languages. They also need the ability to research solutions for newly encountered issues and errors in previously written code.

Patience

All coders and programmers make mistakes. Because of the precise nature of the work, identifying and correcting errors can take many hours. In some circumstances, an entire project may need to be scrapped if a solution is too costly or unworkable. Patience and perseverance help programmers deal with this frustration and continue making progress toward their goals.

Computer Programming Career Paths

Since technology plays an integral role in nearly every industry, businesses require computer programmers for many different reasons, including creating applications, protecting system networks, and analyzing data. As such, the field contains a variety of specialized paths, including cybersecurity, mobile development, and data science.

Cybersecurity

Cybersecurity professionals protect sensitive data and investigate computer-based crimes and fraud. Students prepare for cybersecurity careers by learning about forensic digital analysis, system vulnerability identification, and applied cryptography. Cybersecurity students also participate in "ethical hacking" projects to hone their skills.

Data Science

Data science involves the use of algorithms and various systems to draw new knowledge or insights from structured and unstructured data. After completing coursework in machine learning and management systems, students often seek out careers in data analysis or database administration.

Artificial Intelligence

More and more technologies incorporate some form of artificial or machine intelligence to solve problems or perform their functions more effectively. As a result, learners specializing in artificial intelligence can enter a variety of careers in computer programming while applying their expertise in human language technologies and advanced algorithm design.

Mobile Development

Mobile development involves creating applications and programs for handheld devices. Students usually take classes in graphic design and application development for specific operating systems. Upon graduation, they may create apps for existing technology companies or launch their own entrepreneurial ventures.

Business of Software

Rather than focusing exclusively on the technical aspects of computer programming, some learners may study the business side of software. Students master microeconomic theory, financial accounting, and statistics for business management. Graduates are prepared to lead IT teams, departments, and organizations.

How to Start Your Career in Computer Programming

One of the benefits of a computer programming career is the diversity of professional opportunities in the field. For example, professionals with only an associate degree can qualify for jobs as web developers and computer support specialists.

However, with a bachelor's degree in computer programming, you can take on more advanced roles, including cybersecurity analyst and enterprise application developer. Students who supplement their programming skills with expertise in hardware may also become computer engineers or computer network architects.

Although not always a requirement, a master's degree may give you a competitive edge over other candidates for director and manager positions. Finally, a doctorate in computer programming prepares you for careers in academia or research.

Associate Degree in Computer Programming

While an associate degree may allow you to obtain some junior positions in the IT field, you may not be able to qualify for roles as computer programmers and software developers. If your goal is to become a full-fledged programmer or developer, you can consider an associate degree in computer programming as a stepping stone toward a bachelor's.

If you earn your associate degree at an accredited community college, you can often easily transfer your credits into a bachelor's program. This approach tends to be less expensive than earning all of your undergraduate credits at a four-year college or university.

What Can You Do With an Associate in Computer Programming?

Computer Support Specialist

Computer support specialists offer technical assistance to users and organizations. For example, they may staff a computer helpline, answering questions about common issues and referring more serious problems to other technicians. They may also set up new equipment, perform regular maintenance, and install updates for computers and devices linked to their company's network.

Salary: $54,760

Web Developer

Web developers design and build websites. They must often know how to write code using a programming language like HTML, XML, or JavaScript. Back-end developers focus on the technical infrastructure of a site, while front-end developers are responsible for a site's layout, graphic design, and the functionality of interactive elements.

Salary: $59,790

Sources: BLS and PayScale

Bachelor's Degree in Computer Programming

A bachelor's degree is the standard educational requirement for most jobs in computer programming. Undergraduate programs provide advanced instruction in areas like programming logic; network security; and systems analysis, design, and integration.

Students may also learn specific programming languages depending on their desired career path. For example, a student who wants to work in a healthcare IT department and manage the patient database for a large hospital may learn Structured Query Language (SQL).

Undergraduate programs also typically incorporate some form of experiential learning, such as an internship or capstone project. Students pursuing an online bachelor's in computer programming may compile a portfolio of work showcasing their skills.

What Can You Do With a Bachelor's in Computer Programming?

Computer Programmer

These professionals are responsible for creating the code that enables applications and programs to run smoothly and effectively. In addition to writing new programs, programmers may update old programs to help applications run more efficiently and debug any problems they encounter. These professionals usually need a bachelor's degree.

Salary: $86,550

Information Security Analyst

Information security analysts protect an organization's computer networks and systems. They may actively monitor networks for security breaches, conduct penetration testing to discover potential vulnerabilities, or develop security standards for colleagues and users. Information security analysts typically need at least a bachelor's in computer programming or a related field.

Salary: $99,730

Software Developer

Software developers design computer applications and operating systems. They conduct needs assessments, draft the structure of new programs to meet those needs, and oversee the maintenance and ongoing testing of their products. Whether they write the underlying code or not, software developers need a strong background in computer programming to guide their work.

Salary: $107,510

Source: BLS

Master's Degree in Computer Programming

A master's degree in computer programming prepares you for managerial roles in IT. In addition to studying technical subjects like parallel computing and software engineering, learners in these programs often complete coursework in personnel management, organizational development, and business law.

Some graduate students also complete a thesis or capstone project. Thesis-track master's programs help learners develop skills in quantitative and qualitative analysis, positioning them for further studies or careers in research. Capstone projects — more common in practice-oriented programs — give students the opportunity to apply their learning to a real challenge in computer programming.

What Can You Do With a Master's in Computer Programming?

Computer or Information Systems Manager

These managers oversee computer-related activities at an organization. They create budgets, hire and supervise staff, and collaborate closely with senior leadership. They also ensure the availability of data through management information systems and lead cybersecurity efforts. Many companies prefer to hire candidates with a master's degree in business administration or a relevant technical discipline.

Salary: $146,360

Computer or Information Research Scientist

Computer and information research scientists invent new technologies and identify innovative uses for existing technologies. For example, they may create a new computer programming language to enhance or accelerate software development. Computer scientists often focus on a specific field, such as robotics, artificial intelligence, or data science. Most of these jobs require at least a master's degree.

Salary: $122,840

Source: BLS

Doctoral Degree in Computer Programming

A doctoral degree represents the pinnacle of academic achievement in computer programming. Students who earn this terminal degree often assume senior leadership roles in industry or pursue careers in academia. While you may qualify for some teaching positions at a community college with a master's, tenured faculty positions at four-year institutions require a doctorate.

Most doctoral programs require students to complete a dissertation. The dissertation process involves conducting original research, organizing your methods and findings in a written document, and defending your dissertation before a faculty committee. Some programs give students the option of completing a practice-based doctoral project rather than writing a dissertation.

What Can You Do With a Doctorate in Computer Programming?

Chief Technology Officer

Chief technology officers lead all aspects of their company's IT efforts. They generally serve as a member of their firm's executive team, helping to shape and implement overall organizational strategy. Depending on the size of their company, chief technology officers may also supervise the work of multiple IT managers. Though typically not required, a doctorate can help signal advanced expertise to potential employers.

Salary: $161,670

Postsecondary Teacher, Computer Science

Postsecondary teachers instruct students at colleges and universities. They also conduct and publish original research, serve as advisors to master's and doctoral students, and perform administrative tasks. These positions almost always require a specialized doctoral degree.

Salary: $85,180

Sources: BLS and PayScale

How to Advance Your Career in Computer Programming

While earning a degree in computer programming can help you secure entry-level roles, there are many ways to develop professionally and position yourself for better job and salary prospects. Since most employers do not require an advanced degree, becoming competitive in a field like computer programming typically requires a combination of industry experience, certifications, and networking.

Additionally, taking advantage of continuing education courses can help you stay current on the latest industry trends and technologies. Pursuing continuing education opportunities also demonstrates a desire to learn new competencies and advance your career.

Certifications and/or Licensure

Programmers are not required to earn certification or licensure under state law; however, some employers may require certification in a particular software or product. There are a variety of certifications that you can obtain, many of which are offered by Adobe, Google, and Microsoft.

Web developers, for example, may consider Microsoft's MCSA: web applications certification. This particular certification requires you to successfully pass three exams and may be an attractive option for developers with at least one year of programming experience.

Alternatively, novice programmers who are looking to demonstrate general coding knowledge can consider obtaining Zend's PHP certification. This certification demonstrates expertise in object-oriented programming, HTML, and several databases (most notably SQL). As you consider different certifications, remember that there is no one best certification. Your programming interests and career goals should play a role in your decision-making.

Continuing Education

To keep up with the latest technological advancements, many computer programmers take continuing education classes. While requirements for continuing education vary among employers, many organizations strongly encourage their computer specialists to seek out continuing education credits. These classes can also help professionals who are looking to build competencies in new areas, such as network security and database administration.

In addition to helping programmers stay current in their industry, these courses also demonstrate a desire to keep learning. Since many managerial roles in technology do not require an advanced degree, accruing continuing education credits and work experience often serve as the best ways for programmers to grow in their field.

Next Steps

In addition to completing continuing education credits, networking and joining professional organizations are excellent ways to further advance your career. The IEEE Computer Society is a leading professional group that provides many member benefits for computer specialists, including networking conferences, exclusive in-house publications, job boards, and continuing education opportunities.

Another prominent organization, the Association for Women in Computing, supports women in tech-related fields. The association offers professional networking events, mentoring services, and leadership opportunities. There are many organizations for computer professionals, each providing exclusive membership benefits and networking opportunities.

How to Switch Your Career to Computer Programming

The best way to switch your career to computer programming is by obtaining professional certification and a degree in computer science or a related field. This path will allow you to pursue entry-level roles and position you for career advancement.

However, if you do not have the time or money to pursue a new degree, you can still switch to computer programming. While most employers require a bachelor's degree in computer science or a related field, some employers hire experienced workers with an associate degree or a bachelor's degree in an unrelated field, especially if they already hold programming certifications.

Programming certifications can be costly, but they can help boost your candidacy and allow you to secure some entry-level positions.

Although you can pursue some computer programming jobs with only a certificate and a degree in an unrelated field, your job prospects may be limited. Computer programming positions are fairly competitive, especially at leading tech companies like Amazon and Google.

Where Can You Work as a Computer Programming Professional?

Industries

Many industries require trained computer professionals to improve company operations and provide technology support. As such, computer programming majors can find careers in a variety of sectors, including business, technology, and academia.

Refer to the tables below to learn more about different industries that employ computer programmers. Relevant salary data is also included.

Computer Systems Design and Related Services

Programmers in this industry design automatic processing systems and computer software and hardware.

Average Salary: $91,620

Software Publishers

In the software publishing industry, computer programmers work for companies that design, produce, and distribute the software needed to run computer systems and networks.

Average Salary: $124,280

Management of Companies and Enterprises

This sector consists of establishments that support and oversee other companies. Computer programmers in this industry develop and design solutions to improve company operations.

Average Salary: $91,300

Data Processing, Hosting, and Related Services

Computer programming professionals in this field provide direct support for data processing services. They may also develop web services and applications for a company's clients.

Average Salary: $99,770

Colleges, Universities, and Professional Schools

Computer programmers in academic workplaces provide technology-related services and hardware and software support.

Average Salary: $78,740

Source: BLS

Locations

Because computer programmers can write and test code from anywhere, they may be able to find job opportunities across the country. However, there are several states that have an especially large number of computer programming jobs. California, New York, and Texas account for almost 30% of the roughly 200,000 computer programming positions in the U.S.

Additionally, although Washington and the District of Columbia may not employ as many computer programmers, they provide the highest annual mean salaries for these professionals. Below is a map that details each state's average salary and number of computer programming jobs.

Florida FL Texas TX New Mexico NM Arizona AZ Alaska AK California CA Nevada NV Utah UT Colorado CO Oregon OR Washington WA Idaho ID Hawaii HI Oklahoma OK Montana MT Wyoming WY North Dakota ND South Dakota SD Nebraska NE Kansas KS Minnesota MN Iowa IA Missouri MO Arkansas AR Louisiana LA Mississippi MS Alabama AL Georgia GA South Carolina SC Illinois IL Wisconsin WI Michigan MI Indiana IN Ohio OH Tennessee TN Kentucky KY North Carolina NC West Virginia WV Virginia VA Pennsylvania PA New York NY Maine ME Vermont VT New Hampshire NH Rhode Island RI Connecticut CT New Jersey NJ Delaware DE Massachusetts MA Maryland MD District of Columbia DC

Interview With a Professional in Computer Programming

Austin Norby

Austin Norby

Director of Cyber Initiatives

After four years as a government employee with the National Security Agency, Austin Norby joined Blue Star Software, where he is now the director of cyber initiatives. Austin wears many hats, including technical presenter, talent acquisition specialist, course creator, teacher, and software engineer. He also holds industry-recognized accreditations, such as the OSCP, OSWP, and CISSP credentials. In his spare time, Austin enjoys honing his infosec skills on CTFs, reading, gaming, and eating incredible food.

Why did you decide to pursue a career in computer programming? Was it something you were always interested in?

Interestingly enough, it was not something I was always interested in. I dabbled with computers at home when I was younger and wanted to learn, but I was also easily sidetracked with school, sports, and friends.

By the time I attended college, I was set on getting a degree in mathematics, and one of the required courses was intro to programming. I was excited to take the course, but I had no idea that it would lead to a career.

This course was really tough because we started by learning Lisp. I've had to use it once since and I still think it's an awful language, especially when you're just learning how to program.

What really solidified my pursuit of a career in computer programming was the mixing of mathematics and computer science. This led to my interest in encryption and computer security, which ultimately led to my first job with the Department of Defense (DOD).

One thing that students should make sure to keep in mind is that the intro courses can be fun and easy, but there is always a class that "weeds out" less capable students. What got me through the "weed-out" class was hard work, no doubt, but also I loved the challenge of getting something to work.

There are few things as satisfying as pouring your heart and mind into a challenge and finally seeing the program compile, run, and return the result you were expecting. That trait is necessary to be successful in computer programming.

What is so valuable about earning a degree in this field right now?

The answer to this question is very simple: job flexibility and security. Anyone who can program can be useful to any business currently because of the nature of programming. It can be applied to any field and it's an exponential technology.

Breaking this down further, a business has a product or service and of course requires financing and communication. Programming can address all of those needs and do it quicker than any human so long as the problem is understood well enough.

The real difficulty currently is breaking down problems to their basic components and understanding them well enough in order to build them back up as programs. Some systems lend themselves to this very well, such as accounting, scheduling, and calculating.

Other problems can be broken down into simple components, but computers are still not great at solving them due to computer vision or inherently difficult problems like the traveling salesman problem. Programming can create a website, product, or schedule; process payments; or send information at a percentage of light speed anywhere around the globe.

This is also what I mean by an exponential technology. It can grow and compound on itself while an individual is putting in a linear amount of effort over time. So what does this mean for flexibility and security?

Computer programmers have the flexibility to solve many different problems over their careers by learning one technology: programming. You could be an intern at a biochemical lab running analysis on the lab results. Then you could become an enterprise web developer and give unprecedented access to your company's data to internal teams to improve products and services.

Then you could become a cloud administrator to make computing possible for anyone in the world. And to wrap up your career, you could join a small startup and create an app that you're passionate about.

All of these jobs exist for computer programmers, and the jump between them is simply a matter of learning any missing technologies and whether the company uses your preferred programming language. It's hard to have that kind of flexibility in a career in other professions.

Lastly, let's talk about job security. The job security for programmers is different from the old-school job security that existed many years ago. Job security is more like job availability. Programmers may have temporary jobs for 6-24 months and then choose to leave, or the project is transferred to a new team, or the job is cancelled.

This is great because it leads into the flexibility I just mentioned, and there will ALWAYS be jobs like that around. A project here, a project there. Therefore, the job search becomes much less stressful because it's not a question of if, but when, where, and what I will be doing.

Can graduates of computer programming programs find careers all over the country?

Absolutely! There are so many systems and processes that can and should be updated to modern levels of technology, and those businesses all around the country need to hire computer programmers in order to do that.

One point I will concede regarding my previous statement is getting an internship while you're in school. This can be more difficult because a lot of the developer jobs require about four years of hands-on knowledge in order to know enough to be valuable.

This isn't a hard-and-fast rule, but from a business perspective, it might take more time and energy to create a project that is challenging and rewarding for the intern but provides enough value for the company after accounting for setup time, training time, hourly rates, and tear-down time after the intern leaves.

If you're struggling to get an internship, don't worry. That is not a setback and just requires that you take a different path. One of the best ways to stand out to a future employer is to create personal projects to show that you can and like to code.

The next question people ask is, "what personal projects should I be building?" You should be building anything that makes you excited to sit down and solve problem after problem until you have a working program that you are proud of.

If you want to get into mobile programming, program an app that does a few things. If you want to get into web application programming, create a few "dummy" sites like a portfolio that a potential employer can visit and navigate. If you want to get into cybersecurity, join some Reddit threads, learn about security online, and participate in capture-the-flag (CTF) competitions (most are free).

I also recommend that you read as much code as you can find. Reading other code will help you make your code better and give you "recipes" for solving problems that have already been solved.

Lastly, to address the actual question that was posed, you can do any of this from almost anywhere. Many companies support quality telework/telecommute agreements and many companies have multiple locations across the country. Simply work with your recruiter or HR rep to figure out where would be the best place to put you given the company's goals and your goals.

What did your career trajectory look like after you graduated? How did you end up in your current position?

Starting about a year before graduation, I was able to secure an internship with a company that allowed for part-time work during the school year and full-time work during the summer. I cannot stress enough how much this boosted my career prospects. If something like that exists in your area, definitely apply for it!

I worked throughout my last year and started with the DOD after graduation. I spent about four years with the DOD, moving around to experience and expose myself to all it had to offer. I worked with many different languages, technologies, and types of people and got exposure to a powerful mission.

During those four years after graduation, I did not stop learning. I studied for certifications, I read books, and I took classes at local schools. If there is one piece of advice for computer programmers specifically — but really anyone in any industry — it's never stop learning!

For computer programmers, it's a dual-edged sword. There is so much to learn, from languages to technologies to operating systems to networking to mobile to cloud to you name it. However, the landscape evolves quickly, and a quality programmer must also pivot to learn or stop learning skills as the industry needs them.

Learning a specific technology is never a bad decision, but you must not fall victim to the sunken cost fallacy; do not spend more time in a technology once you know it will no longer provide you, your employer, or your industry value.

What are the pros and cons of working in the industry?

First, we'll start with the pros. Currently, in our industry, the pros are plentiful because of how many things are being transformed from old technology to new technology — that provides many job prospects for computer programmers. Modernization of point-of-sale systems to the cloud; updating websites to use the newest JavaScript frameworks; and designing modern, fast, and user-friendly mobile apps are all very hot jobs right now.

Along with the multiple job prospects — only a few people can fulfill the demand on the industry — comes rather high compensation. This is also location-dependent in many cases, but you certainly can pick your region in the U.S. and make your desired salary, even if you can't necessarily pick your state and/or city.

Some of the cons come from what I just said. The highest salaries are concentrated in certain areas, so complete geographical freedom or choice might not be available. Programming also requires a dedication to learning. It is not a job you can do 9-5 for the next 40 years after graduation unless you constantly learn new skills and apply them to your work.

What advice would you give to computer programming graduates seeking a job after graduation?

I tried to weave in advice in my above responses but I'll highlight some of my favorite advice below.

Never stop learning. Seriously, I can't stress this enough. You will be so much more valuable having learned new skills in the context of older skills through your entire career.

Internships are not mandatory, programming projects are not mandatory, and writing the next unicorn startup app is not mandatory. Do what is available to you to show the world your ability to solve problems, code, and work in a team.

If you can't find a job immediately, keep looking and be willing to take remote positions or relocate for a short, fixed period of time to get the experience or company position you want. Then, work on finding your way back into your ideal geographical location.

Don't be afraid to fail. You will write bad programs, you will write inefficient code, and you will make silly mistakes throughout your career. That is inevitable. Learn from it, add that technology to your list of technologies to master and conquer, and keep moving forward.

Resources for Computer Programming Majors

As computer science continues to evolve, programmers are always looking to keep up with advancements in technology and computational processes. Fortunately, there is an abundance of professional and educational resources that can help computer programming majors.

Read the sections below to learn about the many professional organizations, open courseware, and publications available to both aspiring programmers and current professionals.

Professional Organizations

IEEE Computer Society: A branch of the Institute of Electrical and Electronics Engineers, the Computer Society serves computer science, engineering, and technology professionals. The society organizes conferences, maintains an online repository of academic articles and best practice guides, and administers three certification programs for software developers and engineers.


CompTIA: Since 1982, CompTIA has worked to empower IT professionals and encourage innovation within the computer industry. In addition to disseminating research on subjects like artificial intelligence and the internet of things, the organization produces webinars, podcasts, and training modules to help professionals stay updated on new developments.


Association for Computing Machinery: ACM aims to advance computing as both a science and a profession. The association publishes scholarly journals, convenes regional and international symposia, and gives awards to recognize exemplary service in the field. Members can also communicate and collaborate through special interest groups in areas like embedded systems, microarchitecture, and spatial information.


Computing Research Association: Rather than serving individual professionals, CRA represents more than 200 organizations active in computing research. The association offers a wealth of resources, including best practice memos, regular summaries of new research, workforce and labor market reports, and career mentoring workshops. CRA also hosts a nationwide jobs board.

Open Courseware

Introduction to Computer Science and Programming in Python - Massachusetts Institute of Technology: This undergraduate course is designed for students who have little programming experience. Learners are introduced to basic programming techniques and concepts, including Python. In addition, this course develops students' understanding of computational thinking and their ability to write small sets of programming code.


Programming Fundamentals - Duke University: Designed for beginner students, this programming course focuses on problem-solving and developing algorithms. Over the course of four weeks, students learn how to identify data types, read code, and formulate a correct algorithm. The course culminates in a project that requires students to write and test their own algorithm for sorting data.


Introduction to C and C++ - Massachusetts Institute of Technology: Intended for students with some background in programming, this course introduces learners to C and C++ — programming languages that are commonly used for developing applications. Across these programming languages, students learn how to identify and fix bugs, write object-oriented programming, and allocate memory. Students can take this four-week course during the month of January.


Programming for the Web With JavaScript - University of Pennsylvania: This intermediate course teaches the basics of web information retrieval using the Document Object Model and jQuery. Students learn how to create data-driven websites using JavaScript. For an additional fee, individuals can also earn a certificate to demonstrate new competencies in their field.


Introduction to Game Development - Harvard University: In this free online course, students can learn about the development of interactive games like Super Mario Bros and Angry Birds. Using the frameworks Unity and LOVE 2D, students explore the basics of game design, including animation, sound, and collision detection. This course also introduces students to the programming languages Lua and C#, which are commonly used to construct graphical user interfaces.

Publications

The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas: This book presents a collection of tips to improve your programming process, allowing you to write code more efficiently. Sections cover coding mechanics, architectural techniques, and ways to increase your coding productivity. The book uses a variety of anecdotes and analogies to convey programming concepts.


Python Crash Course: A Hands-On, Project-Based Introduction to Programming by Eric Matthes: This book provides an introduction to Python — one of the most popular programming languages. The first half of the book covers variables, lists, and loops. The second half introduces real projects with an interactive application and an online video game, allowing you to put your new competencies into practice.


Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman, and Julie Sussman: Originally written for the popular MIT introductory programming course, this book focuses on the foundations of functional programming. Unlike other programming books that use Java or Python, this book uses the language Scheme to introduce programming concepts. The revised second edition introduces different approaches to dealing with time in computational models and new sections on graphics and numerical programming.


Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides: This book provides solutions to advanced problems in object-oriented software. Through an in-depth look at 23 different design patterns, readers learn how to create designs that are more flexible and reusable.


Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin: This book provides an overview of coding practices and principles. Divided into three parts, the handbook consists of best practices for writing clean code, case studies, and a list of approaches for solving each case study's problems.


HTML and CSS: Design and Build Websites by Jon Duckett: This book provides an introduction to the basics of HTML and CSS. With the help of illustrative graphics and photography, readers learn how to code and design websites from scratch. This book features a unique structure that allows you to search for specific programming topics.

Frequently Asked Questions

Is a degree in computer programming worth it?

A degree in computer programming can lead to lucrative careers across a variety of industries. If you enjoy math and problem-solving, this degree can benefit you greatly. However, computer programming is a difficult degree, as most programs require advanced courses in statistics and computation theory. If you struggle with math or technology, earning this degree may be especially difficult.

Is computer programming in demand?

The BLS projects that the number of computer programming jobs will decrease by 9% between 2019 and 2029. Many companies are offshoring their programming needs to countries where wages are lower. However, computer programmers can pursue adjacent career paths, such as software developer, that are in high demand.

What kind of jobs can you get with a computer programming degree?

Graduates can pursue job opportunities in business, healthcare, and government. In these sectors, they can work as web developers, software application developers, computer programmers, and database administrators.

How much do computer programming majors make?

According to the BLS, computer programmers earned a median annual salary of $86,550 in 2019, while software developers earned a median annual salary of $107,510.

Read More About Computer Programming on BestColleges

Best Online Associate in Computer Programming Programs Best Online Bachelor's in Computer Programming Programs Most Affordable Online Computer Programming Programs