The learning exercises might consist of simply coding up a few simple exercises in the areas you have listed. Pick a decently rated text and do a few problems.
The portfolio work should probably approximate working systems (e.g., mini-products). Since you are interested in web dev, throw together some working web apps that have full front-to-back-end stack.
Another option, and this one worked out well for me personally, is to take advantage of a cooperative education and internship opportunities. You'll gain a perspective on coding in the "real world" that you'll never get working on personal projects.